<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="怎么解决PHP无法实现多线程的问题" id="card1">
<p> 游客</p><p>
标题:怎么解决PHP无法实现多线程的问题<br/>
正文:<br/>
有没有办法在PHP中实现多线程呢？假设你正在写一个基于多台服务器的PHP应用，理想的情况时同时向多台服务器发送请求，而不是一台接一台。可以实现吗？当有人想要实现并发功能时，他们通常会想到用fork或者spawn threads，但是当他们发现PHP不支持多线程的时候，大概会转换思路去用一些不够好的语言，比如Perl。假设你要建立一个服务来检查正在运行的n台服务器，以确定他们还在正常运转。你可能会写下面这样的代码：$hosts = array(&amp;quot;host1.sample.com&amp;quot;, &amp;quot;host2.sample.com&amp;quot;, &amp;quot;host3.sample.com&amp;quot;); $timeout = 15; $status = array(); foreach ($hosts as $host) {      $errno = 0;      $errstr = &amp;quot;&amp;quot;;      $s = fsockopen($host, 80, $errno, $errstr, $timeout);      if ($s) {         $status[$host] = &amp;quot;Connectedn&amp;quot;;         fwrite($s, &amp;quot;HEAD / HTTP/1.0rnHost: $hostrnrn&amp;quot;);        do {           $data = fread($s, 8192);           if (strlen($data) == 0) {           break;           }          $status[$host] .= $data;       }       while (true);        fclose($s);       }       else {         $status[$host] = &amp;quot;Connection failed: $errno $errstrn&amp;quot;;       } } print_r($status); ?&amp;gt;它运行的很好，但是在fsockopen()分析完hostname并且建立一个成功的连接（或者延时$timeout秒）之前，扩充这段代码来管<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2248&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2248&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2248&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2248&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2248&amp;Page=5">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2248">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2248">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>