PHP伺服器端多進程編程實戰

來源:互聯網
上載者:User
關鍵字 PHP伺服器端多進程編程實戰

 

最近比較PHP跟Python, Erlang的特性,發現PHP有很多人們不常用到的特性。用PHP CLI可以實現很多不錯的應用。比如做搜尋引擎的爬蟲, 長期啟動並執行計算指令碼, 完全可以取代其他語言來做伺服器的營運。這對於熟悉PHP的人來說如虎添翼。

為什麼PHP多進程很好? 網遊伺服器大部分都使用多線程而不是多進程的原因也在於進程比線程更加穩定。而且多線程適合現在多核伺服器的應用情境,更能發揮多核運算的能力。進程的維護可以用很多作業系統層級的工具。Message Queue解決了多大部分線程通訊問題。所以PHP多進程很適合做伺服器端的計算密集型的應用。

據一家越南IT公司介紹,他們成功的把PHP後台多進程用在法律檔案的分發、處理銀行賬戶的金額這樣的企業級的應用上。

使用後台PHP進程可以不影響伺服器同時處理網頁的請求。這種後台進程一旦發生失敗很容易查處原因進行恢複或者補救,所以健壯性更高。不同的進程相互隔離,更加高效,可以統一調度各個服務進程。

PHP是目前應用最廣泛的Web開發語言,所以用PHP來做伺服器端的應用可以降低成本。可以用現有人員、現有配置、甚至做到代碼重用。什麼樣的情境更適合用PHP後台多進程呢?比如郵件的分發、遠程服務的調用、資料的彙總、計劃任務、計算結果的緩衝這些不需要立即返回的地方。

PHP單進程在某些地方完全可以達到目的,而且更加容易實現,不用考慮進程的同步問題,不用考慮資料的共用問題。PHP CLI(SAPI SERVER API) 命令列介面可以用來做CRON計劃任務, 圖形介面程式 (使用GTK庫)。

PHP CLI例子

php -f test.php    php -r “echo time();”    php -R as python style
 

PHP讀取命令列參數:

 

PHP命令列介面標準輸入輸出:

 

CRONJOB可以定時運行某些任務,但要防止重複運行。開始時建立一個鎖檔案, 結束時刪除。或者用ps命令來處理。任務隊列可以用MySQL來實現,或者Key/VALUE資料庫,或者訊息佇列來實現。

進程式控制制相關函數:

Process Control Extensions    pcntl_fork()    posix_setsid()    posix_kill    pcntl_wait    pcntl_signal       SIGHUP    SIGTERM; system shutdown, kill    SIGINT; sent by Ctrl+c    SIGKILL (uncatchable); unresponsive, kill -9    SIGCHLD; child status change    SIGSTP; sent by Ctrl+z    SIGCONT; resume from stop, fg

 

PHP不能對某些錯誤拋出異常,如何提高PHP多進程應用的容錯性?

◆可以監控進程,依賴進程失敗後報告。

◆用CRONJOB實現監控進程。

◆將被監控進程PID寫成檔案。

◆定時檢查PID檔案是否存在 檢查ps -o pid=或者file_exists(‘/proc/’)。

◆如果線程不存在重啟進程。

回顧以前用Java或者Python做的伺服器端的服務都可以用PHP來實現。單一語言更容易維護。以往人們對於Web語言的認識很片面,例如多線程、事 務這些東西都可以改變方式來達到同樣的目的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.