,希望有人能指出我在正確的方向,我覺得我密切AJAX調用,以檢查在後臺運行的進程的狀態,我到處尋找這個作回答,一直沒能找到一個超時
我有兩臺主機,讓我們給他們打電話host1.mydomain.com和host2.mydomain.com(避開每臺主機/每瀏覽器問題2個併發連接),所以它們都指向相同的內容一個僅僅是其他
用戶的別名去host1.mydomain.com,輸入一些信息來註冊,點擊進入,它加載在其host2.mydomain.com要求在同一頁面指向一個頁面的iframe一個通過exec(「curl」)發送請求的php腳本在後臺啓動一個網站刮板,進程ID然後存儲在用戶的數據庫中。在iframe成功加載後(只需要1秒,因爲它創建了後臺進程)我在一個間隔上設置了一個AJAX請求,定期檢查cURL進程的狀態(通過它在數據庫中的進程ID),以便我可以顯示刮板的當前步驟(共有6步)。迄今爲止都很好。
的問題是,AJAX請求刮板的第4步後超時(瀏覽器的默認超時一百二十零分之一百十五秒),即使它不應該是因爲我有兩個不同的主機工作...這意味着以說,這是幾乎一樣,如果我在host1.mydomain.com堵塞兩個連接時,我不是因爲我是從主機2
iframe的負荷啓動刮板這個網址:http://host2.mydomain.com/page.php PHP腳本調用的內容:
exec("curl -o /dev/null 'http://host2.mydomain.com/page.php?method=process' > /dev/null & echo $!", $op);
然後我的ajax請求是輪詢http://host1.mydomain.com/status.php?pid=x哪l在數據庫ooks增長的進程ID檢查狀態
,一旦刮到達步驟4,我的AJAX請求超時
我想我感到很困惑解釋這一點,但我希望有人能幫助我
而不是用'exec()'調用CLI curl,它會更清潔地使用PHP的本地cURL庫綁定:http://php.net/curl –
問題是我需要在後臺運行它,你可以通過使用PHP cURL lib來實現嗎?因爲我確實使用它來爲刮板實際刮擦網站..我只是想,因爲我只是調用一個頁面來初始化刮刀這種方式會更容易,並將過程發送到背景 –
此外我需要知道進程ID,以便我可以監視刮板的進度,你將無法從使用PHP的內置cURL庫獲得(至少不是我所知道的) –