<?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/>
子进程的创建一般的子进程的写法是：&amp;lt;?php$pid = pcntl_fork();if($pid == -1){     //创建失败     die('could not fork');}else{    if($pid){        //从这里开始写的代码是父进程的        exit(&amp;quot;parent!&amp;quot;);    }    else{        //子进程代码，为防止不停的启用子进程造成系统资源被耗尽的情况，一般子进程代码运行完成后，加入exit来确保子进程正常退出。        exit(&amp;quot;child&amp;quot;);    }}?&amp;gt;    上边的代码如果创建子进程成功的话，系统就有了2个进程，一个为父进程，一个为子进程，子进程的id号为$pid。在系统运行到$pid = pcntl_fork();时，在这个地方进行分支，父子进程各自开始运行各自的程序代码。代码的运行结果是parent 和child，很奇怪吧，为什么一个if和else互斥的代码中，都输出了结果？其实是像上边所说的，代码在pcntl_fork时，一个父进程运行parent，一个子进程运行了child。在代码结果上就显示了parent和child。至于谁先谁后的问题，这得要看系统资源的分配了。    如果需要起多个进程来处理数据，可以根据数据的数量，按照约定好的数量比如说1000条一个进程来起子进程。使用for循环就可以了。    #如果获得的总数小于或等于0，等待60秒，并退出  if ($count &amp;lt;= 0)   {    sleep(60);    exit;  }  #如果大于1000，计算需要起的进程数  if ($count &amp;gt; 1000)  {    $cycleSize = ceil($count/1000);  }  else  {    $cycleSize = 1;  }    for ($i=0; $i&amp;lt;$cycleSize; $i++)  {    $pid  = pcntl_fork();    if($pid == -1)    {      break;    }    else    {      <br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2118&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2118&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2118&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2118&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2118&amp;Page=9">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2118">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2118">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>