熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP-Fcgi下PHP的執行時間設置方法

2013-11-15 12:36:16  來源: PHP編程 
昨天一個程序需要導出條數據結果發現到條是Nginx報出 Gateway Timeout錯誤原來PHPFcgi下的設置執行時間與isapi的不同  

  一般情況下設置PHP腳本執行超時的時間

  一在phpini裡面設置

  max_execution_time = ;
通過PHP的ini_set 函數設置

  ini_set("max_execution_time" "");
通過set_time_limit 函數設置

  set_time_limit();

PHPFcgi下PHP的執行時間設置方法

  昨天一個程序需要導出條數據結果發現到條是Nginx報出 Gateway Timeout錯誤

  經觀察發現大約秒時超時phpini中執行時間配置已經是

復制代碼 代碼如下: max_execution_time =

  再查nginx的相關配置無果

  寫了一個php的測試頁再測

復制代碼 代碼如下:
echo aaa;
set_time_limit();
sleep();
echo aa;

  依然超時可以確定set_time_limit這個函數沒生效

  再查phpfcgi的配置phpfpmconf下邊這個設置疑似有問題

復制代碼 代碼如下:
<VALUE name="request_terminate_timeout">s</VALUE>

  查官方文檔

復制代碼 代碼如下:
request_terminate_timeout The timeout (in seconds) for serving a single request after which the worker process will be terminated Should be used when max_execution_time ini option does not stop script execution for some reason Default: "s" Note: s means off

  大意是php中set_time_limit設置的時間內如果php還沒執行完則走此處的配置也就是request_terminate_timeout=
先把這個參數改的和php中set_time_limit值一樣都是還不行不理解為什麼如果高手知道請賜教

  最終把request_terminate_timeout關閉程序可以正常執行了問題解決

復制代碼 代碼如下: <VALUE name="request_terminate_timeout">s</VALUE>

  補充如果前端的nginx服務器使用了upstream負載均衡那個負載均衡配置中以下幾個參數也需要相應修改

復制代碼 代碼如下:
 proxy_connect_timeout       s;
 proxy_send_timeout          s; 
 proxy_read_timeout          s;
From:http://tw.wingwit.com/Article/program/PHP/201311/21264.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.