PHP 的並行如何??

來源:互聯網
上載者:User
要實現一個廣播功能,廣播的表裡有內容,開始時間,結束時間,間隔時間。



我用do while 做定時處理,代碼如下:
do{$ti = strtotime(date('Y-m-d H:i:s'));//目前時間戳$array  = $this->all_broadcast();//廣播數組foreach($array as $key => $val){$intervals = 60;//(秒)間隔時間$content = urlencode($val['content']);//廣播內容if($ti >= $val['starttime'] && $ti <= $val['endtime']){//判斷目前時間是否大於等於開始時間並且小於等於結束時間$hello = $this->get_curl($content);//調用廣播的方法開始廣播sleep($intervals);//間隔時間調用一次}fclose($fp);}sleep(10);//10秒}while(true);


現在的問題是:如果廣播是一條的話,可以根據間隔時間來按時廣播。如果廣播有好幾條,那他就不能在同一時間調用get_curl方法N次。這要怎麼解決呢?
怎樣能讓他們根據各自的開始時間、結束時間、間隔時間,互不干擾地進行播放呢?
這是不是需要PHP中的並行來實現呢?


回複討論(解決方案)

這個問題貌似涉及到了多線程,如果在java中可以做到,弄多個線程讓它跑就是了。
php不支援多線程。但是可以用一個苯點的辦法實現你要的需求就是:定時任務;
linux下可以用crontab來實現。

試試 curl_multi 吧

這個問題貌似涉及到了多線程,如果在java中可以做到,弄多個線程讓它跑就是了。
php不支援多線程。但是可以用一個苯點的辦法實現你要的需求就是:定時任務;
linux下可以用crontab來實現。 不是linux的系統,win下怎麼實現呢?能點建議吧!

1086 和 1087 的開始時間相同
你打算混合輸出這兩條內容?


這個問題貌似涉及到了多線程,如果在java中可以做到,弄多個線程讓它跑就是了。
php不支援多線程。但是可以用一個苯點的辦法實現你要的需求就是:定時任務;
linux下可以用crontab來實現。 不是linux的系統,win下怎麼實現呢?能點建議吧!

windows裝一個crontab工具

1086 和 1087 的開始時間相同
你打算混合輸出這兩條內容?
是的。他們互不干擾地輸入各種預先設定好的!

不知道什麼意思,

sleep(10);//10秒
這個不會在網頁上顯示內容 啊只有10 過後才會顯示,一次性顯示,
你的好像是死迴圈吧

我也是新人

並行未必需要用多線程~ 而且php的多線程庫在cgi下鬼知道會發生什麼情況,絕對要好好測試下,有興趣的同學試試。
回到正題,樓主可能需要的是非同步~
比如程式運行到某一刻發一條通知到某個處理單元(實現方式先不論),然後也不等待這個處理單元的處理結果就直接向下執行,這樣就能省下時間~
關於這個,鳥哥討論過幾種實現方式~
http://www.laruence.com/2008/04/14/318.html
另,其中用curl的辦法有點小變化,我在評論裡加了一筆。

翻了一下文檔~ 發現curl 有了毫秒級的逾時設定~CURLOPT_CONNECTTIMEOUT_MS 這個選項備忘: Added in cURL 7.16.2. Available since PHP 5.2.3我現在用的cURL 7.24 和 php5.4 ~ 暗爽~


當然,時隔這麼久,也許有其它更好的辦法~ http://www.swoole.com/ 就是一例,私以為這個堪成大器,phper可以不用再跪著寫代碼了~

好吧,有點不太習慣CSDN內建的文字編輯~ 湊合看吧~

並行未必需要用多線程~ 而且php的多線程庫在cgi下鬼知道會發生什麼情況,絕對要好好測試下,有興趣的同學試試。
回到正題,樓主可能需要的是非同步~
比如程式運行到某一刻發一條通知到某個處理單元(實現方式先不論),然後也不等待這個處理單元的處理結果就直接向下執行,這樣就能省下時間~
關於這個,鳥哥討論過幾種實現方式~
http://www.laruence.com/2008/04/14/318.html
另,其中用curl的辦法有點小變化,我在評論裡加了一筆。

翻了一下文檔~ 發現curl 有了毫秒級的逾時設定~CURLOPT_CONNECTTIMEOUT_MS 這個選項備忘: Added in cURL 7.16.2. Available since PHP 5.2.3我現在用的cURL 7.24 和 php5.4 ~ 暗爽~


當然,時隔這麼久,也許有其它更好的辦法~ http://www.swoole.com/ 就是一例,私以為這個堪成大器,phper可以不用再跪著寫代碼了~

哎!我也看過這個swoole,可看那代碼,不像是PHP的啊?而且我複製到代碼裡都報錯。不會用啊這是!
  • 聯繫我們

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