【问题标题】:Godaddy updated Apache, now fgetcsv insert into mysql script stopped workingGodaddy 更新了 Apache,现在 fgetcsv 插入 mysql 脚本停止工作
【发布时间】:2013-08-02 18:50:07
【问题描述】:

首先感谢所有关注我问题的人。我不是 PHP、Apache 或 MySQL 方面的专家,所以请多多包涵。我创建了一个小脚本,它将使用 fgetcsv 循环并插入到 MySql 中的 CSV 文件。该脚本在 CRON 作业上运行了大约 2 个月,没有任何问题。我相信当时 Godaddy 更新 Apache(2.2 到 2.4)它停止工作并返回 500 内部错误。我只有在开始使用不同的 CSV 文件创建一个新脚本来补充我的第一个具有相同问题的 CSV 文件时才发现。到目前为止,我已经用谷歌搜索了我能想到的与我的问题相关的所有内容,我已经阅读了许多 Stackoverflow 的答案,并与 Godaddy 坐了 2 个小时(他们最后说他们不知道为什么,并且他们相信我的某些东西脚本导致问题,但无法进一步建议)。也许这与更新无关,但奇怪的是在这样的更新之后才停止。 在此更新之前,我的脚本需要 34 秒才能完成。现在我收到 500 错误,如果有人能看出我的脚本有问题或能告诉我为什么它突然停止,我将不胜感激。

<?php
session_start();
define("USERACCESSCONTROL", "TRUE");
include 'c_db.php';
if (!$importcsv = fopen("../sync/IVQtyPvt.csv", "r")) {
    echo "could not open file";
} else {
    do {
        If ($i > 1) {
            if ($data[0]) {
                $updatecsv = $inv_con->Prepare("INSERT INTO slave_inventory 
                    (ITEMNMBR,ITMGEDSC,CDC,MAIN,RTO1,RTO2,CDA,KEN,MIS,VAL,
                    KAL,QTYONORD,QTS_CDC,QTS_KEN,QTS_MIS,QTS_KAL,STNDCOST,
                    updated) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW())
                    ON DUPLICATE KEY UPDATE ITMGEDSC=?,CDC=?,MAIN=?,RTO1=?,
                    RTO2=?,CDA=?,KEN=?,MIS=?,VAL=?,KAL=?,QTYONORD=?,
                    QTS_CDC=?,QTS_KEN=?,QTS_MIS=?,QTS_KAL=?,STNDCOST=?,
                    updated=NOW()");
                $updatecsv->bind_param("ssiiiiiiiiiiiiiiisiiiiiiiiiiiiiii",
                        $data[0], $data[1], $data[2], $data[3], $data[4],
                        $data[5], $data[6], $data[7], $data[8], $data[9],
                        $data[10], $data[11], $data[12], $data[13],
                        $data[14], $data[15], $data[16], $data[1], $data[2],
                        $data[3], $data[4], $data[5], $data[6], $data[7], 
                        $data[8], $data[9], $data[10], $data[11], $data[12],
                        $data[13], $data[14], $data[15], $data[16]);
                $updatecsv->execute();
            }
        }
        $i++;
    } while ($data = fgetcsv($importcsv, ","));
}
?>

这是我的日志文件中重复的条目。

[2013 年 8 月 2 日星期五 04:31:29] [9618523] [dir:error] [client 64.74.215.89:33823] 在 mod_dir 内部,将 document_root 设置为 PARENT_DOCUMENT_ROOT:/var/chroot/home/content/23/9618523 /html [fcgid:warn] [client 70.89.210.90:55475] mod_fcgid: 120 秒内读取数据超时 [Fri Aug 02 09:30:34 2013] [9618523] [core:error] [client 70.89.210.90:55475] 标头前的脚本输出结束:

我已添加到我的 php.ini 和 php5.ini

max_execution_time = 340
max_input_time = 340

将此添加到我的 .htaccess 中(以修复可能的 fastcgi 问题)

AddHandler x-httpd-php5-cgi .php
AddHandler x-httpd-php5-cgi .php5

仍然没有骰子 我的 CSV 文件有 17 列、27000 行,如果有更好的方法可以做到这一点,我会对此持开放态度,但我无法像在共享主机上那样让 LOAD INFILE 工作。

【问题讨论】:

  • 500 错误总是在日志中说明原因。检查那里
  • 感谢您的建议,我在 Godaddy 为他们的错误记录提供的日志文件中发布了三个条目。每次我的工作被解雇时,我都会得到上述条目。我找不到 PHP 错误日志,即使设置它也不会显示在我的根目录中,我相信 Godaddy 不允许您查看它们...
  • Apache 500 错误仅表示 php 有错误,因此查看此错误的简单方法是 error_reporting(E_ALL); ini_set('display_errors',1);,因此请运行您的脚本来查看错误。
  • 嗨@user1281385 再次感谢您的帮助我尝试了您的链接,其中一个解决方案破坏了我的网站,另一个没有影响。 ontananza 是什么?如果我能看到一个可以为我指明正确方向的错误,我会非常高兴!

标签: php mysql apache fgetcsv


【解决方案1】:

原来是 Godaddy 是问题所在,我的脚本又开始自己运行了。我想这就是我在 Godaddy 上共享托管所得到的。我想我很快就要换主机了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2015-12-03
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多