【问题标题】:Looping through files, one file processes, then that's it, no error reporting循环文件,一个文件处理,就这样,不报错
【发布时间】:2012-11-20 16:15:35
【问题描述】:

所以我正在处理的脚本有问题。我有一个包含名为 roster0.json、roster1 等的 JSON 文件的文件夹。

$dir = "responses/";
$files = glob($dir . "roster*");
$failed = array();
$failcnt = 0;

if (isset($files)) {
   $data = null;
   for ($i = 0; $i < count($files); $i++) {
        $data = json_decode(utf8_decode(file_get_contents($files[$i])));
        if(isset($data)){
            // Process stuff

当我使用 var_dump($files) 时,我得到一个包含 100 多个路径“responses/roster0.json”的数组。 当我测试 $data 时,我得到了正确的数据数组。 但是,一旦循环进入下一个文件,它就永远不会加载它,也永远不会处理它。

这是疯狂的部分。如果我更改 for 循环的开始,例如$i = 20。它将加载目录中的第21个文件并解析并正确插入到db中!

忽略底部的失败内容,这是脚本的完整当前版本。 http://pastebin.com/yqyKi5Ag

PS - 我在 PHP 中有完整的警告/错误报告,但没有收到任何错误消息...帮助!谢谢!

【问题讨论】:

  • 你是如何执行 PHP 的?如果您在浏览器中执行它,错误将出现在 Web 服务器错误日志中。如果您配置了 SSL 日志并使用 SSL 访问脚本,则错误将出现在相应的日志中
  • 我们的服务器通常会丢弃一个error_log文件并且没有。
  • 你有没有试过写错东西,看看日志中是否出现错误?
  • 代码并没有走得太远,但您对isset 的使用在技术上是不正确的,因为您检查的内容始终是设置好的。在某些情况下,您可能想要!== nullis_array。此外,json_decode(utf8_decode(file_get_contents($files[$i]))); 不会抛出任何异常,因此它周围的 try...catch 永远不会捕获错误。阅读每个函数的文档以查看它们在失败时返回的内容并检查这些值。
  • 一个 PS - ini_set('display_errors', 1);错误报告(E_ALL);已开启。

标签: php json loops file-get-contents


【解决方案1】:

当我编写插入字符串时,ID 被复制,因此无效。切换到 auto-inc 和 tada。有用。感谢您的帮助。 ——

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多