要實現一個廣播功能,廣播的表裡有內容,開始時間,結束時間,間隔時間。
我用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的啊?而且我複製到代碼裡都報錯。不會用啊這是!