怎樣能夠長時間運行php腳本

但無論在windows上用IE訪問,還是在linux上用firefox訪問,過不了幾分鐘就彈出頁面
 
網絡訪問消息:: 不能顯示此頁

解釋: 在頁面檢索完成之前,請求超時。

嘗試下列:
刷新頁:單擊“刷新”按鈕來再次搜索此頁。這可能是一個一次性錯誤。
如果您仍然看不到請求的頁面,請與您的管理員或支持人員聯繫。



技術信息(提供給支持人員)
錯誤代碼 1460: 超時
背景信息: 網關不能從您要訪問的網站、DNS 服務器或另一個網關服務器接收到及時響應。這可能表明網擁塞,或者該網站遇到技術困難。
日期: 2010-10-10 6:42:17
服務器: srv-isa.actions.com.cn
源: 防火牆


然後後臺的php腳本就停止了
請問該怎麼辦才能讓php腳本一直跑下去呢?不要寄希望於PHP能幫你完成。換其他語言吧。

每做完一個循環暫停一下,否則分配的資源會被佔盡,就宕了
那麼長時間有什麼用啊

在什麼上使用? 本地麼#2的就可以 如果是空間 就不行 空間會把把超時的腳本殺掉

如果想讓PHP一直運行下去也是可以的 不過要受到服務器的限制

提供一個方法給你 

用set_time_limit(0); 暫時不讓腳本過期
執行到臨界時間(服務器超時)前模擬http請求再次調用這個腳本 提供響應參數讓起繼續執行。

弱弱問一句,模擬http請求再次調用這個腳本?那豈不是要從頭再跑,那上次已經運行過的怎麼辦?

出現你的這種情況的原因是 web 服務器超時了

1、你可以在命令行方式下運行你的代碼
2、修改你的程序,在循環中要有輸出,那怕是 echo ' ';

這個很好辦啊,我上面有說,把此次運行的一下數據記錄下來,在下次調用的時候通過GET或者POST方式傳給這個腳本,然後執行之前對這些參數進行分析,以確定從哪裏繼續執行。

再加上 ignore_user_abort(); 這個函數,可以讓腳本在關閉瀏覽器的時候依然執行下去(守護進程)。當然,服務器如果重啓什麼的,就沒用了 :)

再補充一下嘮叨老大的說法,如果一個長時間執行的腳本,在它運行的時間內一直沒有輸出的話,服務器可能就認定它超時給殺掉了。所以你需要在進本運行的時候echo點什麼東西。 然後這裏還有個兼容性的問題是,IE瀏覽器只有在獲取到超過1024(好像是,具體忘了)個字符後纔會輸出東西,其他瀏覽器則不會,你可以做一個小的循環輸出1-100試一下。
如果是這樣的話,那麼數據會非常不準確。
而且服務器是必須定期清理session表離線用戶的,根據用戶最後發送的請求lastactive與當前時間的差值來判斷。

如果要達到精確的話,必須每隔1分鐘或者30秒發送一次請求。


~~~~~~
看了很多帖子,感覺繞到的方法還是我自己原先設計的那個,因爲服務器端PHP不能主動向客戶端發送信息。只能客戶端請求。。

所以爲了證明這個用戶在線,就必須不停的發送在線請求。
爲什麼?
因爲有的用戶不正常關機或者死機 ,那麼網頁裏面的onunload 就不會觸發。。。。。。。。

~~~~~~~
而現在的問題就是,如果同一時間發送在線請求的人數非常多,同時1萬,另外限制每個用戶最短只能1分鐘發送一次,那麼請求量也是會巨大的,甚至導致服務器宕機???(未經過測試)
來源:nba直播

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章