我正在编写一个脚本,将csv数据批量导入到mysql DB表中。我正在遍历数据并检查该值是否已存在于数据库中。如果没有,则将其插入到表中。但是脚本给出了504网关超时错误。我尝试增加max_execution_time,但没有任何工作,脚本超时发生在大约7-9分钟。我尝试在cPanel中增加超时时间,并使用以下代码
ini_set('max_execution_time', 1800);
ini_set('default_socket_timeout', 1800);但是,在任何帮助的帮助下,都不起作用。PHP版本是7.3
发布于 2020-09-26 05:53:24
所有的well服务器通常都有一个单独的超时,以及php,如Apache和IIS,默认情况下大约6-7分钟。您需要检查您的主机正在运行哪个软件,并检查其文档。虽然通常您不能更改这些设置,但只能更改服务器所有者(我猜您是在租用服务器/空间)。但首先,在你设置它们之后,值得尝试echo ini_get('max_execution_time');,看看它是否改变了什么,或者已经被服务器覆盖了(在共享主机上,可能有一个‘硬上限’,你不能再增加了)。
发布于 2020-09-26 15:41:19
您应该尝试使用MYSQL事务来插入csv记录。在insert操作开始之前启动事务,在所有进程结束后提交事务。这里有一个小例子,它会对你有所帮助。
$file_name = 'https://yoursite.com/upload_csv_folder/' . $csv_file_name;
$fileSize = file($file_name);
$totalRow = count($fileSize);
$handle = fopen($file_name, "r");
$header = fgetcsv($handle, 1000, ",");
mysql_query("START TRANSACTION");
while (($csv_data = fgetcsv($handle, 1000, ",")) !== false) {
// Do your duplicate checking operation
// Insert record
}
mysql_query("COMMIT");谢谢你。
https://stackoverflow.com/questions/64059869
复制相似问题