2013-05-16 43 views
0

我看到了, http://php.net/manual/en/function.posix-setsid.php pcntl_fork()示例在底部。該代碼工作正常。我可以結合它的PHP線程? http://www.php.net/manual/en/class.thread.php如何在線程中使用php pcntl_fork?

<?php 
    $pid = pcntl_fork(); // fork 
    if ($pid < 0) 
     exit; 
    else if ($pid) // parent 
     exit; 
    else { // child 

     $sid = posix_setsid(); 

     if ($sid < 0) 
      exit; 

     for($i = 0; $i <= 60; $i++) { // do something for 5 minutes 
      sleep(5); 
     } 
    } 
?> 

回答

1

我不知道你想達到什麼,但如果你想隨意搭配線程和叉子,你最好做這件事之前,先閱讀:Threads and fork(): think twice before mixing them如果你只是想從控制終端分離並然後啓動線程(但不是進程),這很可能會很好。 (只需用線程代碼替換for部分。)

無論如何,應該指出,編寫沒有內存泄漏的PHP守護進程非常困難,但並非不可能。預計花很多時間尋找內存問題,特別是如果您使用複雜的類結構。

此外,一些PHP的擴展是非線程安全,特別是如果他們執行一些外部二進制文件。在做這件事之前,你可能真的想三思。我也會考慮選擇一種不同的語言。

+0

好的,謝謝。所以最好不要在PHP中使用線程。 – user2380555