Contents

php pcntl_fork 多程序小記

之前在 swoole 有簡單紀錄 pcntl_fork
我在寫那篇之前,以為 pcntl_fork 執行子程序大概不會收到執行結果
不過今天仔細看,可以接收到程式執行結果
但還是不能傳接收參數值

簡單範例

多采多姿的程式筆記: 利用PHP寫Multi Process程式 1 - 產生子程序
基本上裡面範例可以直接拿來改
建議先了解 fork 子程序概念會是最好

多采多姿的程式筆記: 利用PHP用寫Multi Process程式 - 2 使用信號機
ftok swoole 裡面有 Message Quene 有提到

pcntl_wait、pcntl_waitpid

php多进程总结 - leezhxing - 博客园備份圖

裡面也有提 殭屍程序

八克里: PHP Multi Process 程式以 PING 多主機應用為範例
備份mylinux_document/ping.php at master · malagege/mylinux_document

DB 連線問題

目前有簡單實驗,父子 DB 連線是可以共用的
但不建議這樣做,同時在跑的程式結果有做 交易(translation) 就很麻煩
所以還是分開來會比較好
pcntl_fork 導致 MySQL server has gone away 解決方案 - AllenChou - 博客園 備份圖

2019-12-04
建議做 fork 時候最好先把連線關掉
完成重新做連線會比較好
否則會預到很多問題

Daemon

PHP实现daemon | Nginlion 備份圖
如何优雅地运行一个 Daemon
PHP多进程编程 | 第二世 備份圖

彩蛋

shaneharter/PHP-Daemon: Build production-ready Daemons using PHP 5.3+. Build fault-tolerant applications without the boilerplate.
深入理解Linux修改hostname - 潇湘隐者 - 博客园
Bash 程式設計教學:平行執行背景子行程,用 wait 等待工作結束 - G. T. Wang