2017-01-19 44 views
0

我正在嘗試執行核心WP升級,我遇到的問題是服務器需要時間下載更新包,並且在此期間不發送任何響應主體,因此瀏覽器終止腳本(超時?),然後終止我假設的PHP腳本。PHP在服務器下載文件時保持HTTP連接? (WP升級)

我找到的一個臨時解決方案是,如果我編輯核心WP文件以在下載文件時輸出一些填充文本(使用CURLOPT_WRITEFUNCTION通過cURL下載),則連接將保持活動狀態並下載軟件包。

但是,下一步是解壓縮包,這需要一段時間,然後再次失敗(由於沒有收到任何內容,瀏覽器會關閉連接)。

在服務器執行升級時,有什麼方法保持連接處於活動狀態?

+0

我從來沒有這個問題升級WP永遠。你只是試圖通過管理面板更新,或者這是一個插件或你正在寫的東西?任何原因,您不能只從wordpress.org/latest.zip下載,並通過您的WP安裝上載該軟件包的內容來手動升級?否則,只需編輯您的'php.ini'設置並將'max_execution_time'更改爲更高的值。錯誤日誌可能會顯示它失敗的原因。 – drew010

+0

是的,通過管理面板默認行爲升級核心。沒有理由我不能做手動升級,除了我想解決這個問題,並找出哪些服務器設置導致它失敗。我已經啓用了WP調試,並且我沒有收到任何錯誤,它似乎超時。 –

+0

如果您覺得瀏覽器由於超時而不是服務器上的任何事情而關閉連接,那麼這可能意味着服務器的下載速度非常慢。你超時使用什麼瀏覽器? – drew010

回答

0

有幾種方法可以達到預期的效果。首先,你可以設置一些cURL選項; CURLOPT_CONNECTTIMEOUT or CURLOPT_CONNECTTIMEOUT_MS將定義嘗試連接時等待的秒數(或毫秒)。 CURLOPT_TIMEOUT or CURLOPT_TIMEOUT_MS將定義curl在關閉連接之前運行的秒數(或毫秒)。

您也可以在php.ini中設置max_execution_time,默認爲30秒。通常可以將其定期更改爲更大的數字,但我建議您在完成所需操作後將其設置恢復爲默認值30秒。

您可以查看更多捲曲選項和示例here。你可以閱讀關於通過運行時配置here或通過php.ini更改max_execution_time here

+0

嗨,這些是核心的WP文件,所以我只是爲了調試目的而編輯,我不應該改變它們中的任何一個。爲了澄清這個問題,瀏覽器似乎關閉了連接,而PHP正在後臺下載一個大文件,而不是向瀏覽器發送任何內容。所以我需要一種方法來保持連接打開,直到PHP完成執行整個腳本。這似乎是更多的服務器配置問題? –