亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

linux下php多線程的妙用

2024-09-04 11:50:22
字體:
來源:轉載
供稿:網友

      開始用php寫后臺服務一段時間了.也是在這樣的驅動下,不斷的學習php語法,體驗這一原來一直以為神秘且敬而遠之的神奇語言的魅力.最初看php多線程的資料是為了提高程序的處理能力,充分發揮linux多任務的優勢.不曾想多線程沒用成反到是帶來了一系列的意外收獲.讓之后的許多問題迎刃而解,不敢獨享特一一道來.
      本文所講的東西是源自php的pcntl_fork函數.因為這個函數依賴操作系統fork的實現,所以本文所講的東西只適用于linux/unix.ok,那么先看看這個函數的用法吧.php手冊上是這么說的:
 

<?php
$pid = pcntl_fork();
if ($pid == -1) {
         die('could not fork');
} else if ($pid) {
         // we are the parent
         pcntl_wait($status); //Protect against Zombie children
} else {
         // we are the child
}
?>

      通過pcntl_fork創建一個子進程,如果返回值是-1的話,那么說明子進程創建失敗.創建成功的進程id會返回給父進程,0返回給子進程.不好理解吧,費了很常時間明白以后,筆者習慣這樣寫:
 

<?php
$pid = pcntl_fork();
if($pid == -1){
         //創建失敗咱就退出唄,沒啥好說的
         die('could not fork');
}
else{
        if($pid){
                //從這里開始寫的代碼是父進程的,因為寫的是系統程序,記得退出的時候給個返回值
                exit(0);
        }
        else{
                //從這里開始寫的代碼都是在新的進程里執行的,同樣正常退出的話,最好也給一個返回值
                exit(0);
        }
}
?>

      這樣一改好理解多了,如果你父進程希望知道子進程正常退出的話,可以加上前面的pcntl_wait.
      函數的用法是整明白了,在實際的工作中有什么用處呢?
      1.后臺程序
      命令行程序好寫,服務程序也好寫,筆者覺得這服務程序最難寫.想想原來想在windows下寫個服務啥的,又是要注冊服務又是要這樣那樣的老費勁了.現在專職管理linux想讓個命令行程序在后臺運行,直接在命令后面加個&就搞定了.但是這樣總覺得土.有了pcntl_fork突然發現世界是那么的美好.當主進程成功創建子進程并獲得子進程的id以后,自己在臨死前還不忘說一句:"我已成功運行,我的id是:xxxx(子進程的id)",完了還給系統返回個0(正常退出),哈哈,死都死的那么有尊嚴.
      前面說的是程序常駐內存的情況,當然了這時候要注意內存的釋放以及向日志文件打印信息,而不是往屏幕上(一打印信息程序就退出的喲).還有一種情況是:程序被其它腳本調用,其它腳本只關心程序是不是正常運行,如果程序要運行很長時間才能運行完的話,最好不讓腳本等待.這樣的話pcntl_fork又派上用場了:)
      2.延時處理.
      有的時候,我們程序退出的時候要清理自身產生的東西,比如說要刪除自己(當然了linux下面是可以刪除正在運行的文件的,只是舉個例子),這個時候就可以另起動一個進程,然后自己結束了,把事情交給另一個進程來做.當我們寫服務程序的時候,我們肯定是寫日志文件記錄程序的運行情況(要不誰知道程序是不是在那睡大覺的:0).程序正常退出的時候我們可以寫一條日志說程序退出了,但是當程序收到linux下偉大的kill -9的時候,怎么記錄自己的退出行為呢?額.....這個和php的進程信號有關好像和這個沒多大關系.
      另一種情況:一個完善的程序一般都支持start,stop,restart這樣的參數.start好說,stop也好說,既然start和stop都好說了,這個restart就先stop然后再start就可以了啊.額...好像又和pcntl_fork沒多大關系,當你收到重啟的信號總不能還是kill然后再start吧,是不是太黃太暴力了?還是溫柔一點,讓當前進程退出,讓另外的進程再把它拉起來吧.在windows下想實現這一點似乎很困難呢,比如程序更新的時候,一般都是單寫更新程序,或者程序退出的時候另起動一個批處理啟動自己:)
      3.不死進程
      其實就是傳說中的雙進程了.早些年的時候萬象網管為了達到不被惡意結束的目的用的就是這招了.雖然咱不用擔心程序被人惡意停止,但是也保不齊主程序因為任務太重抗不住自己先掛了(這種情況也不是不會發生).所以......
      說了這么多,只是對寫程序的一些思考,對一個函數用法的延伸.我想到了這么多,你呢?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品高清久久久| 成人精品在线视频| 国产精品va在线播放| 日韩黄色高清视频| 精品国产拍在线观看| 久久99国产精品自在自在app| 国产福利精品av综合导导航| 91精品久久久久久久久久另类| 国产mv久久久| 亚洲成av人影院在线观看| 久久久国产一区| 精品一区二区三区四区在线| 国产97免费视| 精品亚洲一区二区三区| 国产成人精品久久亚洲高清不卡| 日韩免费看的电影电视剧大全| 97精品欧美一区二区三区| 91影院在线免费观看视频| 国产精品久久999| 中文字幕日韩av电影| 国产欧美婷婷中文| 久久久久久亚洲精品中文字幕| 国产精品美女免费视频| 亚洲一区中文字幕| 欧美性猛xxx| 午夜精品久久久久久久白皮肤| 国产一区二中文字幕在线看| 这里只有精品视频在线| 国产一区二区三区丝袜| 亚洲精品美女网站| 中文字幕av一区二区三区谷原希美| 7m第一福利500精品视频| 国产精品午夜一区二区欲梦| 一个人看的www久久| 搡老女人一区二区三区视频tv| 亚洲第一网中文字幕| 久久五月情影视| 日日噜噜噜夜夜爽亚洲精品| 欧洲中文字幕国产精品| 欧美国产精品va在线观看| 日韩欧美一区视频| 亚洲欧洲午夜一线一品| 日韩av毛片网| 日韩电影中文 亚洲精品乱码| 国产精品日日做人人爱| 精品一区二区三区四区在线| 懂色av中文一区二区三区天美| 在线视频日韩精品| 欧美老女人xx| 日韩成人中文字幕| 亚洲成人激情图| 欧美黄色片在线观看| 国产日韩专区在线| 日本国产欧美一区二区三区| 欧美久久精品午夜青青大伊人| 亚洲电影av在线| 成人精品视频久久久久| 久久乐国产精品| 日韩av在线电影网| 亚洲第一精品电影| 国产精品三级久久久久久电影| 91国自产精品中文字幕亚洲| 日韩电影中文字幕在线观看| 欧美伊久线香蕉线新在线| 国产精品色悠悠| 欧美中文字幕视频| 欧美国产视频一区二区| 久久久国产视频91| 欧美高清自拍一区| 日韩精品极品视频| 亚洲精品影视在线观看| 亚洲视频在线看| 青青久久av北条麻妃黑人| 欧美在线一区二区三区四| 欧美日韩一区二区免费在线观看| 国产精品三级美女白浆呻吟| 久久亚洲精品毛片| 亚洲午夜久久久久久久| 九九综合九九综合| 亚洲视频在线视频| 久久99青青精品免费观看| 国产欧美日韩中文字幕在线| 伦理中文字幕亚洲| 国产一区二区三区丝袜| 成人福利网站在线观看11| 一区国产精品视频| 性色av一区二区三区红粉影视| 国产福利精品av综合导导航| 成人做爽爽免费视频| 国产精品国产三级国产aⅴ浪潮| 日本高清视频精品| 国产一区二区三区精品久久久| 久久久精品在线观看| 久久九九免费视频| 久久久免费高清电视剧观看| 成人国产亚洲精品a区天堂华泰| 高跟丝袜欧美一区| 亚洲日本中文字幕免费在线不卡| 国产精品视频导航| 久久精品亚洲一区| 日韩三级影视基地| 国产一区二区三区在线观看网站| 欧美成人午夜激情在线| 欧美性猛交丰臀xxxxx网站| 欧美巨乳美女视频| 久久亚洲国产精品成人av秋霞| 精品中文字幕在线观看| 国产999在线观看| 欧美二区乱c黑人| 日本精品中文字幕| 成人在线免费观看视视频| 91黑丝在线观看| 久久精品国产96久久久香蕉| 国产精品国产三级国产专播精品人| 国产成人小视频在线观看| 国产精品精品国产| www.日本久久久久com.| 成人激情在线观看| 成人av色在线观看| 91夜夜未满十八勿入爽爽影院| 日韩激情av在线播放| 色阁综合伊人av| 精品性高朝久久久久久久| 日韩视频欧美视频| 日韩欧美在线观看视频| 日韩免费在线电影| 日韩经典中文字幕在线观看| 97香蕉超级碰碰久久免费软件| 国产精品久久久久7777婷婷| 亚洲天堂av在线免费观看| 26uuu另类亚洲欧美日本老年| 色噜噜狠狠色综合网图区| 国内精品伊人久久| 国产精品偷伦视频免费观看国产| 国产成人午夜视频网址| 2019中文字幕免费视频| 亚洲精品成人久久电影| 亚洲精品国产欧美| 992tv成人免费影院| 日韩视频免费大全中文字幕| 蜜臀久久99精品久久久久久宅男| 国产精品三级网站| 欧美激情乱人伦| 亚洲国产精品女人久久久| 国产精品午夜视频| 久久69精品久久久久久久电影好| 久久精品中文字幕电影| 国产精品久久久久久久av大片| 久久久精品亚洲| 日本午夜人人精品| 欧美日韩国产黄| 国产精品久久久久久久久免费| 欧美精品在线免费播放| 韩日精品中文字幕| 日韩成人在线视频观看| 久久精品99久久香蕉国产色戒| 国产v综合v亚洲欧美久久| 亚洲网站视频福利| 亚洲一区二区久久久| 欧美精品videossex性护士| 欧美国产日韩一区| 91高潮在线观看| 在线看福利67194| 国产精品久久久久久久7电影|