PHP實現多進程並行操作(可做守護進程)

來源:互聯網
上載者:User
PHP簡單實現多進程平行處理,子進程負責處理事物,父進程可控制子進程數量,用pcntl擴充實現(備忘:在windows下此效果無法實現)




  1. /**
  2. * 入口函數
  3. * 將此檔案儲存為 ProcessOpera.php
  4. * 在terminal中運行 /usr/local/php/bin/php ProcessOpera.php &
  5. * 查看進程 ps aux|grep php
  6. */
  7. ProcessOpera("runCode", array(), 8);
  8. /**
  9. * run Code
  10. */
  11. function runCode($opt = array()) {
  12. //需要在守護進程中啟動並執行代碼
  13. }
  14. /**
  15. * $func為子進程執行具體事物的函數名稱
  16. * $opt為$func的參數 數組形式
  17. * $pNum 為fork的子進程數量
  18. */
  19. function ProcessOpera($func, $opts = array(), $pNum = 1) {
  20. while(true) {
  21. $pid = pcntl_fork();
  22. if($pid == -1) {
  23. exit("pid fork error");
  24. }
  25. if($pid) {
  26. static $execute = 0;
  27. $execute++;
  28. if($execute >= $pNum) {
  29. pcntl_wait($status);
  30. $execute--;
  31. }
  32. } else {
  33. while(true) {
  34. //somecode
  35. $func($opts);
  36. sleep(1);
  37. }
  38. exit(0);
  39. }
  40. }
  41. }
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.