windows 使用 xxfpm 解決 php-cgi 進程自動關閉


 

windows 下 php-cgi 進程處理一定數量的訪問后,就會自動關閉,由於沒辦法直接讓 php-cgi 進程支持更多的訪問數量,所以只能啟動多個進程來滿足需求。

xxfpm 是一個可執行程序,它能同時啟動多個 php-cgi 進程,並且在任何一個進程關閉時,都會重新啟動一個新的進程,始終保持一定數量的進程,這樣,就無需手動創建,省去了很多麻煩。

xxfpm 需要 pthreadGC2.dll 的支持,如果沒有,會報錯。將 pthreadGC2.dll 放在 xxfpm 的 bin 目錄下,即可啟動 xxfpm。

xxfpm 詳細介紹

經測試,支持Win32和Linux-x86平台。對於用php的人,有了這個東西來維護一定數量的進程,就能制服經常崩潰退出的php-cgi啦!!!

Usage: xxfpm path [-n number] [-i ip] [-p port]
Manage FastCGI processes.

-n, --number number of processes to keep
-i, --ip ip address to bind
-p, --port port to bind, default is 8000
-u, --user start processes using specified linux user
-g, --group start processes using specified linux group
-r, --root change root direcotry for the processes
-h, --help output usage information and exit
-v, --version output version information and exit

第一個寫得比較標准的終端應用程序,我是看了cygwin的里的一些源代碼,然后學會了如何使用getopt,算是寫得比較標准的,但是代碼也不短。

使用例子:
xxfpm z:/php5/php-cgi.exe -n 5 -p 8080

有人問,如何給程序加入參數?這個不難,使用雙引號即可,路徑要用"/"而不用"\"。例如要指定php.ini的路徑,可以用下面例子:
xxfpm "z:/php5/php-cgi.exe -c z:/php5/php.ini" -n 5 -i 127.0.0.1 -p 8080

 

如何維護進程:

Windows上使用CreateProcess創建進程,使用WaitForSingleObject等待進程結束;Linux上使用fork和 execl創建進程,使用waitpid等待進程結束。Linux的版本多了在創建子進程的時候可以設置進程限制,能夠以受限用戶方式來運行。

當進程管理器被關閉的時候,它所創建的所有子進程也必須被關閉。Windows上使用JobObject這個東西來把子進程與管理器的進程產生關 聯,感謝iceboy提供的資料!Linux上通過捕捉關閉信號,然后給所有子進程發送SIGTERM來結束子進程。詳見源代碼!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM