日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
服務(wù)器端PHP多進(jìn)程編程實(shí)戰(zhàn)

最近比較PHP跟Python, Erlang的特性,發(fā)現(xiàn)PHP有很多人們不常用到的特性。用PHP CLI可以實(shí)現(xiàn)很多不錯(cuò)的應(yīng)用。比如做搜索引擎的爬蟲(chóng), 長(zhǎng)期運(yùn)行的計(jì)算腳本, 完全可以取代其他語(yǔ)言來(lái)做服務(wù)器的運(yùn)維。這對(duì)于熟悉PHP的人來(lái)說(shuō)如虎添翼。

為大同等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及大同網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都做網(wǎng)站、大同網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

推薦閱讀:讓PHP開(kāi)發(fā)者事半功倍的十大技巧

為什么PHP多進(jìn)程很好? 網(wǎng)游服務(wù)器大部分都使用多線程而不是多進(jìn)程的原因也在于進(jìn)程比線程更加穩(wěn)定。而且多線程適合現(xiàn)在多核服務(wù)器的應(yīng)用場(chǎng)景,更能發(fā)揮多核運(yùn)算的能力。進(jìn)程的維護(hù)可以用很多操作系統(tǒng)級(jí)別的工具。Message Queue解決了多大部分線程通信問(wèn)題。所以PHP多進(jìn)程很適合做服務(wù)器端的計(jì)算密集型的應(yīng)用。

據(jù)一家越南IT公司介紹,他們成功的把PHP后臺(tái)多進(jìn)程用在法律文件的分發(fā)、處理銀行賬戶的金額這樣的企業(yè)級(jí)的應(yīng)用上。

使用后臺(tái)PHP進(jìn)程可以不影響服務(wù)器同時(shí)處理網(wǎng)頁(yè)的請(qǐng)求。這種后臺(tái)進(jìn)程一旦發(fā)生失敗很容易查處原因進(jìn)行恢復(fù)或者補(bǔ)救,所以健壯性更高。不同的進(jìn)程相互隔離,更加高效,可以統(tǒng)一調(diào)度各個(gè)服務(wù)進(jìn)程。

PHP是目前應(yīng)用最廣泛的Web開(kāi)發(fā)語(yǔ)言,所以用PHP來(lái)做服務(wù)器端的應(yīng)用可以降低成本。可以用現(xiàn)有人員、現(xiàn)有配置、甚至做到代碼重用。什么樣的場(chǎng)景更適合用PHP后臺(tái)多進(jìn)程呢?比如郵件的分發(fā)、遠(yuǎn)程服務(wù)的調(diào)用、數(shù)據(jù)的聚合、計(jì)劃任務(wù)、計(jì)算結(jié)果的緩存這些不需要立即返回的地方。

PHP單進(jìn)程在某些地方完全可以達(dá)到目的,而且更加容易實(shí)現(xiàn),不用考慮進(jìn)程的同步問(wèn)題,不用考慮數(shù)據(jù)的共享問(wèn)題。PHP CLI(SAPI SERVER API) 命令行接口可以用來(lái)做CRON計(jì)劃任務(wù), 圖形界面程序 (使用GTK庫(kù))。

PHP CLI例子

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

PHP讀取命令行參數(shù):

 
 
 
  1. #!/usr/bin/php -q  
  2. echo “Test Arguments:\n”;  
  3. echo $_SERVER["argc"].”\n”;  
  4. echo $_SERVER["argv"][0].”\n”;  
  5. ?> 

PHP命令行接口標(biāo)準(zhǔn)輸入輸出:

 
 
 
  1. #!/usr/bin/php -q  
  2. /* Define STDIN in case if it is not already defined by PHP for some reason */  
  3. if(!defined(“STDIN”)) {  
  4. define(“STDIN”, fopen(‘php://stdin’,'r’))  
  5. }  
  6.  
  7. echo “Hello! What is your name (enter below):\n”;  
  8. $strName = fread(STDIN, 80); // Read up to 80 characters or a newline  
  9. echo ‘Hello ‘ , $strName , “\n”;  
  10. ?> 

CRONJOB可以定時(shí)運(yùn)行某些任務(wù),但要防止重復(fù)運(yùn)行。開(kāi)始時(shí)創(chuàng)建一個(gè)鎖文件, 結(jié)束時(shí)刪除?;蛘哂胮s命令來(lái)處理。任務(wù)隊(duì)列可以用MySQL來(lái)實(shí)現(xiàn),或者Key/VALUE數(shù)據(jù)庫(kù),或者消息隊(duì)列來(lái)實(shí)現(xiàn)。

進(jìn)程控制相關(guān)函數(shù):

 
 
 
  1. Process Control Extensions  
  2. pcntl_fork()  
  3. posix_setsid()  
  4. posix_kill  
  5. pcntl_wait  
  6. pcntl_signal  
  7.  
  8. SIGHUP  
  9. SIGTERM; system shutdown, kill  
  10. SIGINT; sent by Ctrl+c  
  11. SIGKILL (uncatchable); unresponsive, kill -9  
  12. SIGCHLD; child status change  
  13. SIGSTP; sent by Ctrl+z  
  14. SIGCONT; resume from stop, fg 

PHP不能對(duì)某些錯(cuò)誤拋出異常,如何提高PHP多進(jìn)程應(yīng)用的容錯(cuò)性?

◆可以監(jiān)控進(jìn)程,依賴進(jìn)程失敗后報(bào)告。

◆用CRONJOB實(shí)現(xiàn)監(jiān)控進(jìn)程。

◆將被監(jiān)控進(jìn)程PID寫(xiě)成文件。

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

◆如果線程不存在重啟進(jìn)程。

回顧以前用Java或者Python做的服務(wù)器端的服務(wù)都可以用PHP來(lái)實(shí)現(xiàn)。單一語(yǔ)言更容易維護(hù)。以往人們對(duì)于Web語(yǔ)言的認(rèn)識(shí)很片面,例如多線程、事 務(wù)這些東西都可以改變方式來(lái)達(dá)到同樣的目的。

原文鏈接:http://blog.eood.cn/server-side-php-progress-program-best-practice

【編輯推薦】

  1. PHP生成隨機(jī)字符串的三種方法
  2. 百萬(wàn)級(jí)PHP網(wǎng)站架構(gòu)工具箱
  3. 大型Web應(yīng)用運(yùn)行時(shí) PHP負(fù)載均衡指南
  4. 讓PHP開(kāi)發(fā)者事半功倍的十大技巧
  5. PHP資深開(kāi)發(fā)者談:緣何放棄PHP改用Python

本文題目:服務(wù)器端PHP多進(jìn)程編程實(shí)戰(zhàn)
文章地址:http://m.5511xx.com/article/dpocoio.html