QPM全名是 Quick Process Management Framework for PHP. PHP 是強大的web開發語言,以致於你們經常忘記PHP 能夠用來開發健壯的命令行(CLI)程序以致於daemon程序。 而編寫daemon程序免不了與各類進程管理打交道。QPM正是爲簡化進程管理而開發的類庫。git
QPM的項目地址是: https://github.com/Comos/qpm github
如下是用QPM編寫多進程程序的小例子。web
//定義 mission1:每隔3秒打印一次進程信息, 無限循環。 $mission1 = function() { while(true) { echo "---mission 1, pid:".posix_getpid()."\n"; sleep(3); } }; //定義 mission2:打印信息後 3秒後退出。 $mission2 = function() { echo "+++mission 2,pid:".posix_getpid()."\n"; sleep(3); }; //配置: mission 1 和mission 2 同時在子進程中執行。mission 1 只容許在一個子進程中執行,mission 2 則容許2個子進程並行執行。 $config = [ ['runnableCallback'=>$mission1], ['runnableCallback'=>$mission2, 'quantity'=>2] ]; // 使用multiGroupOneForOne 類型的supervisor 啓動任務,意味着同組配置,當一個子進程退出後,會當即重啓新的子進程繼續執行任務。 qpm\supervisor\Supervisor::multiGroupOneForOne($config)->start();
到目前爲止,QPM實現了fork的面向對象的寫法,極大的簡化了fork代碼的可讀性;同時實現了一系列Supervisor的用法,能夠幫助開發者編寫健壯的多進程程序。 在將來的版本里,計劃逐步開發出信號處理和跨進程通迅的模塊。框架
關於 QPM的使用,能夠參考:ui