【问题标题】:php call to file_get_contents() terminates scriptphp 调用 file_get_contents() 终止脚本
【发布时间】:2018-03-23 11:37:47
【问题描述】:

我编写了一个小的 PHP 脚本,我在 VS-Code(无浏览器)中从本地命令行运行。该脚本使用file_get_contents() 连接到一个 URL 最多 4,000 次以下载不同的 JSON 文件。

一段时间后调用file_get_contents(),但没有返回,脚本终止。我在file_get_contents() 调用之前和之后放置了echo 语句以尝试诊断问题。

起初我以为是超时问题,但事实并非如此,因为我可以在 30 到 150 秒之间成功调用 200 到 1,500 次。看起来好像连接正在被另一端丢弃/拒绝/终止,但我遇到的问题是我无法阻止我的脚本终止。我查看了 C:\wamp64\logs 文件夹,但没有记录任何内容。

有什么方法可以确定导致问题的原因,更重要的是,防止我的脚本终止,以便它可以继续。 我没有为调用file_get_contents() 创建/修改任何标题信息。

foreach ($urls as $url) {
echo "URL: $url\n";
echo "Get file data\n";
$json = file_get_contents($url);
echo "Got file data\n";
}

示例输出... 获取文件数据

[Done] 在 325.239 秒内以 code=null 退出

【问题讨论】:

  • 如果您需要解决方案或建议,请发布代码。如果您只想聊天,那么您上错了网站。阅读How to Ask 一个好问题。
  • 你能不能把一些代码放进去,我们至少可以尝试回答终止脚本部分的问题。这样你就成功了一半……
  • 我已经更新了一个代码示例。
  • 要不你去掉error silencing operator @ 看看抛出了什么错误...
  • 不是个好日子 :-( 抱歉,'@' 字符不应该存在。我看到其他人建议它,所以我只是出于沮丧而添加它。我会从代码示例。

标签: php file-get-contents


【解决方案1】:

好的,我终于找到了问题的根源。问题与它在 VS Code 中的运行方式有关。通过添加以下设置(文件|首选项|设置)在集成终端而不是输出窗口中运行代码,它现在可以工作了:-)

{
    "code-runner.runInTerminal": true
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多