我正在處理服務器發佈給我們的腳本,我們發佈到服務器,理論上應該從服務器接收響應並回復發布給我們的服務器。但是有時候我發佈的服務器沒有迴應。最大的問題是,發佈給我們的服務器將假定交易成功完成,除非聽到其他信息。所以基本上我需要一種方法來將響應發送回第一臺服務器,如果我從未收到我發佈的服務器的迴音。我認爲register_shutdown_function可以爲我工作,但我不知道如何設置它,所以它只運行在錯誤或任何其他。在PHP超時運行PHP函數
在此先感謝
我正在處理服務器發佈給我們的腳本,我們發佈到服務器,理論上應該從服務器接收響應並回復發布給我們的服務器。但是有時候我發佈的服務器沒有迴應。最大的問題是,發佈給我們的服務器將假定交易成功完成,除非聽到其他信息。所以基本上我需要一種方法來將響應發送回第一臺服務器,如果我從未收到我發佈的服務器的迴音。我認爲register_shutdown_function可以爲我工作,但我不知道如何設置它,所以它只運行在錯誤或任何其他。在PHP超時運行PHP函數
在此先感謝
register_shutdown_function()
應該爲你工作。只需使用一個全局變量來確定遠程服務器是否迴應與否:
<?php
function on_shutdown() {
if (!$GLOBALS['complete']) {
// Handle server not responding here
}
}
// Suppress "FATAL ERROR" message when time limit reached
error_reporting(0);
$complete = FALSE;
register_shutdown_function('on_shutdown');
// Code which posts to remote server here
$complete = TRUE;
這意味着$complete
仍然會是假的,如果該帖的遠程服務器不完整的,所以你可以檢查truthyness代碼$complete
在關閉時觸發的函數中。
downvoter是否善意解釋這有什麼問題? – DaveRandom 2012-04-20 16:24:17
如何將數據發佈到目標服務器?捲曲? – DaveRandom 2012-04-20 16:05:19
它使用COM庫(dll)發佈,我們發佈的服務器爲我們提供了運行的DLL,並且我只是使用dll將它們發佈到 – Peter 2012-04-20 16:06:48
因此,這是一個編譯爲PHP擴展的DLL ,其功能有時不會返回?我感覺這是一個相當差的延伸。雖然沒有太多可以做的,但我想... – DaveRandom 2012-04-20 16:12:04