PHP中使用多線程

<?php  
while(1)//循環採用3個進程
{
    //declare(ticks=1);
    $bWaitFlag= FALSE; // 是否等待進程結束
    //$bWaitFlag = TRUE; // 是否等待進程結束
    $intNum= 5; // 進程總數
    $pids= array(); // 進程PID數組
    for($i= 0; $i<$intNum; $i++)
    {

        $pids[$i] = pcntl_fork();// 產生子進程,並且從當前行之下開試運行代碼,並且不繼承父進程的數據信息
        /*if($pids[$i])//父進程
        {
        //echo $pids[$i]."parent"."$i -> " . time(). "\n";
        }
        */
         if($pids[$i] == -1)
         {
            echo"couldn't fork". "\n";
         }
         elseif(!$pids[$i])
         {
             sleep(1);
             echo"\n"."第".$i."個進程 -> ". time(). " \n";
             //$redis->hIncrBy('user_45610', 'badge', 1);

            //$url=" 抓取頁面的例子
            //$content = file_get_contents($url);
            //file_put_contents('message.txt',$content);
            //echo "\n"."第".$i."個進程 -> " ."抓取頁面".$i."-> " . time()."\n";
             exit(0);//子進程要exit不然會進行遞歸多進程,父進程不要exit不然終止多進程
         }
        if($bWaitFlag)
        {
            pcntl_waitpid($pids[$i], $status, WUNTRACED);
            echo"wait $i -> ". time() . "\n";
        }        
    }
    sleep(1);
    echo memory_get_usage();
}
相關文章
相關標籤/搜索