【问题标题】:Can't decrease PHP execution/timeout time无法减少 PHP 执行/超时时间
【发布时间】:2017-05-01 21:54:41
【问题描述】:

我在使用 PHP 时遇到了超时/执行时间问题。我正在尝试使用以下脚本测试 Filemaker 数据库是否可用:

$connected = $fm->listLayouts();
if(FileMaker::isError($connected))
{
die('Error - ' . $connected->getCode() . ' ' . $connected->getMessage());
}

问题是脚本需要 60sec 才能显示以下错误:

错误 - 7 通信错误:(7) 无法连接到 103.22.180.61 端口 80:连接超时

这太长了。有没有办法在 PHP 中编写脚本来尝试连接到数据库,如果它在 10 秒内无法正常工作,请停止尝试连接并显示错误(或做其他事情)马上?我试过了……

set_time_limit(10);
if(FileMaker::isError($connected))
{
die('Error - ' . $connected->getCode() . ' ' . $connected->getMessage());
}

但它没有用。还是60秒。有什么想法吗?我已经尝试自己研究了一个小时,但没有任何成功...非常感谢!

【问题讨论】:

  • 你不能在php.ini 中设置这个吗? -> ini_set('max_execution_time', 10);或者直接在源码中试试。
  • 我试过“ini_set('max_execution_time', 10);”已经,但还是 60 秒...我不知道为什么?

标签: php timeout execution die


【解决方案1】:

max_execution_timeset_time_limit 仅适用于 PHP 脚本。如果与 Filemaker 的连接可能会在 Filemaker 配置中的其他位置设置超时。

来自 PHP 文档;

注意: set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动所花费的任何时间,例如使用 system() 的系统调用、流操作、数据库查询等。在实测时间为真实的 Windows 上,情况并非如此。

【讨论】:

  • 亲爱的怪人,非常感谢您的意见。这就说得通了。该死的,这也意味着我不知道如何减少 Filemaker 请求的超时......有没有办法在 PHP 中编写脚本,例如:“尝试做一些事情,如果 10 秒后没有发生任何事情,那就停下来做别的东西?” - 对不起,我的描述方式非常简单。 ;-) 再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
相关资源
最近更新 更多