成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
PHP是目前應用最廣泛的Web開發語言,所以用PHP來做服務器端的應用可以降低成本。文章將介紹一個PHP在服務器端的多進程編程實例,在很多場景下,比如郵件的分發、遠程服務的調用、數據的聚合、計劃任務等等,都能夠用到PHP多進程編程。

最近比較PHP跟Python, Erlang的特性,發現PHP有很多人們不常用到的特性。用PHP CLI可以實現很多不錯的應用。比如做搜索引擎的爬蟲, 長期運行的計算腳本, 完全可以取代其他語言來做服務器的運維。這對于熟悉PHP的人來說如虎添翼。

51CTO推薦閱讀:讓PHP開發者事半功倍的十大技巧

為什么PHP多進程很好? 網游服務器大部分都使用多線程而不是多進程的原因也在于進程比線程更加穩定。而且多線程適合現在多核服務器的應用場景,更能發揮多核運算的能力。進程的維護可以用很多操作系統級別的工具。Message Queue解決了多大部分線程通信問題。所以PHP多進程很適合做服務器端的計算密集型的應用。

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

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

PHP是目前應用最廣泛的Web開發語言,所以用PHP來做服務器端的應用可以降低成本??梢杂矛F有人員、現有配置、甚至做到代碼重用。什么樣的場景更適合用PHP后臺多進程呢?比如郵件的分發、遠程服務的調用、數據的聚合、計劃任務、計算結果的緩存這些不需要立即返回的地方。

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

PHP CLI例子

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

PHP讀取命令行參數:

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

PHP命令行接口標準輸入輸出:

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

CRONJOB可以定時運行某些任務,但要防止重復運行。開始時創建一個鎖文件, 結束時刪除。或者用ps命令來處理。任務隊列可以用MySQL來實現,或者Key/VALUE數據庫,或者消息隊列來實現。

進程控制相關函數:

  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不能對某些錯誤拋出異常,如何提高PHP多進程應用的容錯性?

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

◆用CRONJOB實現監控進程。

◆將被監控進程PID寫成文件。

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

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

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

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

【編輯推薦】

  1. PHP生成隨機字符串的三種方法
  2. 百萬級PHP網站架構工具箱
  3. 大型Web應用運行時 PHP負載均衡指南
  4. 讓PHP開發者事半功倍的十大技巧
  5. PHP資深開發者談:緣何放棄PHP改用Python
責任編輯:王曉東 來源: 博客
相關推薦

2021-09-16 10:31:08

服務器編程 語言PHP

2018-03-15 09:54:45

php服務器端語言

2021-09-02 10:49:25

Node.jsPHP服務器開發

2010-08-30 13:58:43

服務器端數據庫

2014-01-15 10:06:30

vFlash

2011-07-26 11:07:08

JavaScript

2012-10-15 13:40:15

IBMdw

2020-06-02 14:57:06

Linux服務器架構

2021-09-16 10:10:07

服務器開發編程語言

2018-07-09 10:01:56

2015-10-27 09:40:31

TCPIP網絡協議

2009-08-21 17:33:34

服務器端程序C#網絡編程

2009-08-21 17:39:20

服務器端程序C#網絡編程

2013-12-25 11:01:16

JavaScript

2017-12-06 22:29:53

2015-11-04 14:14:56

HTTP網絡協議

2011-06-07 16:01:46

Android 服務器 數據交互

2014-11-14 11:03:56

微軟.NET

2023-06-30 08:00:00

漏洞網絡安全SSTI

2024-01-03 10:03:26

PythonTCP服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美中文字幕在线视频 | 日韩精品av一区二区三区 | а_天堂中文最新版地址 | 黄色免费av| 久久com | 亚洲国产精品一区二区第一页 | 欧美二区在线 | 精品一区二区久久久久久久网精 | 国产综合精品一区二区三区 | 看羞羞视频 | 国产区第一页 | 欧美亚洲第一区 | 91精品欧美久久久久久久 | 久久国产综合 | 日韩欧美三区 | 中文字幕第一页在线 | 国产精品久久久久久久久免费丝袜 | 国产精品久久久久久久7777 | 中文字幕福利视频 | 一本色道精品久久一区二区三区 | 亚洲一区二区三区免费 | 欧美日韩综合视频 | 久草在线影| 亚洲高清视频一区二区 | 精品一区二区三区四区外站 | 毛片99| 日韩精品一区二区三区视频播放 | 久久精品视频一区二区三区 | 欧美日高清 | 国产在线视频一区二区 | 亚洲三区在线观看 | 亚洲五码久久 | chinese中国真实乱对白 | 人人干人人艹 | 在线日韩 | 国产精品久久福利 | 国产成人综合一区二区三区 | 看黄在线 | 欧美三级在线 | 狠狠狠干 | 欧美精品v |