2012-04-20 84 views
0

我正在處理服務器發佈給我們的腳本,我們發佈到服務器,理論上應該從服務器接收響應並回復發布給我們的服務器。但是有時候我發佈的服務器沒有迴應。最大的問題是,發佈給我們的服務器將假定交易成功完成,除非聽到其他信息。所以基本上我需要一種方法來將響應發送回第一臺服務器,如果我從未收到我發佈的服務器的迴音。我認爲register_shutdown_function可以爲我工作,但我不知道如何設置它,所以它只運行在錯誤或任何其他。在PHP超時運行PHP函數

在此先感謝

+0

如何將數據發佈到目標服務器?捲曲? – DaveRandom 2012-04-20 16:05:19

+0

它使用COM庫(dll)發佈,我們發佈的服務器爲我們提供了運行的DLL,並且我只是使用dll將它們發佈到 – Peter 2012-04-20 16:06:48

+0

因此,這是一個編譯爲PHP擴展的DLL ,其功能有時不會返回?我感覺這是一個相當差的延伸。雖然沒有太多可以做的,但我想... – DaveRandom 2012-04-20 16:12:04

回答

1

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在關閉時觸發的函數中。

+0

downvoter是否善意解釋這有什麼問題? – DaveRandom 2012-04-20 16:24:17