我現在搞了個採集的php代碼,把網頁的資料擷取下來儲存在案頭,現在測試的時候發現一個問題,在瀏覽器關閉的情況下,php還在繼續執行產生資料,問題來了:如何在關閉瀏覽器或者點擊瀏覽器上url輸入後面的停止按鈕使得php代碼不再繼續執行?
回複討論(解決方案)
php預設是關閉就停止執行了啊,你用ajax請求php嗎?
回複樓上的沒有用ajax
直接關閉瀏覽器就停止了,當前的PHP操作了。
建議從幾個角度去查問題:
1.瀏覽器的進程是否結束
2.Linux的情況,使用不同WEB服務時,配置是否正確,是否存在配置導致瀏覽器關閉,但是WEB服務的當前進程仍然在執行。
偽進程?
很多人想搞還搞不來呢!
你需要在你的代碼中設施並處理可以觸及到的終止訊號
最近我也發現了這個問題, 瀏覽器關閉, 程式是會執行的。
但是應該是執行完當前的內容後, 就會停止。
如果你是本地測試, 我一般都直接重啟服務。
你要做採集, 建議還是用bin方式來做。
最近我也發現了這個問題, 瀏覽器關閉, 程式是會執行的。
但是應該是執行完當前的內容後, 就會停止。
如果你是本地測試, 我一般都直接重啟服務。
你要做採集, 建議還是用bin方式來做。
bin方式指的是?求指點
set_time_limit();
設定指令碼最多執行的時間,是最簡單的方法。
呵呵,你雖然關了瀏覽器,但是程式的指令早就已經發出去了,再他未完成所有的指令之前,假如沒有給停止命令(是的是跟底層,伺服器有關的指令,不是指管瀏覽器),之前的未完成的指令會繼續執行,知道指令完成或者被迫停止(比如重啟伺服器,或者重啟web服務程式)
加個exit()試試看
嗯,我的採集也出現了這個問題,關閉了瀏覽器,還一直在下。我的猜想是跟php curl的工作機制有關,具體原因不清楚。
起初我登出電腦都不行,一定是重啟。
可能因為是http協議,最後我在進程裡關閉瀏覽器的進程就可以了;另外我覺得可以關閉apache服務應該也可以,沒試過。
程式設定了最大執行時間很長,程式裡面用了sleep主要防止採集的太快封ip,不知道和這個有沒關係。
程式設定了最大執行時間很長,程式裡面用了sleep主要防止採集的太快封ip,不知道和這個有沒關係。 目測和這個沒有關係,php curl是可以支援代理的。
跟這個沒關係,但跟你的程式寫法有關係,由於並沒有看到你的程式,所以也不能明確的說
一般的說:
當關閉瀏覽器,程式會終止(php 還專門設有函數來改變這個行為),是有條件的
這個條件就是程式必須有輸出
php 只在有輸出時才去檢查到使用者的串連是否斷開
先在工作管理員確認瀏覽器進程是否關閉了再談更高深的問題吧
我關瀏覽器通常都要等幾分鐘進程才結束,機器年代久遠……
還是沒找到解決辦法,只有重啟apache才能終止。
就是php的命令列方式, 而且最好是在Linux下面使用, 穩定。