批量导入数据到mysql数据库,导致504网关超时。(PHP和CI)

批量导入数据到mysql数据库,导致504网关超时。(PHP和CI),php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在制作一个脚本,将csv数据批量导入mysql DB表。我正在遍历数据并检查数据库中是否已经存在该值。如果没有,则将其插入表中。 但是脚本给出了504网关超时错误。我尝试增加max_execution_时间,但没有任何效果,脚本超时发生在7-9分钟左右。 我尝试在cPanel中增加超时,并使用以下代码 ini_set('max_execution_time', 1800); ini_set('default_socket_timeout', 1800); 但由于任何帮助,一切都不起作用。

我正在制作一个脚本,将csv数据批量导入mysql DB表。我正在遍历数据并检查数据库中是否已经存在该值。如果没有,则将其插入表中。 但是脚本给出了504网关超时错误。我尝试增加max_execution_时间,但没有任何效果,脚本超时发生在7-9分钟左右。 我尝试在cPanel中增加超时,并使用以下代码

ini_set('max_execution_time', 1800);
ini_set('default_socket_timeout', 1800);
但由于任何帮助,一切都不起作用。
PHP版本是7.3

所有Web服务器通常都有一个单独的超时时间,默认情况下,与Apache和IIS等PHP服务器相比大约有6-7分钟。您需要检查主机正在运行的软件,并检查其文档。虽然通常您不能更改这些设置,但只能更改服务器所有者(我猜您是在租用服务器/空间)。但首先值得一试
echo ini_get('max_execution_time')以查看它是否更改了任何内容或是否已被服务器覆盖(在共享主机上,可能存在一个“硬上限”,您无法进一步增加。

您应该尝试MYSQL事务来插入csv记录。在插入操作之前启动事务,在所有进程结束之后提交事务。下面是一个小示例,它将帮助您

$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");

谢谢。

PHP超时通常不会产生504错误。网关超时意味着您和服务器之间的等待已经厌倦。它可能是一个负载平衡器或一些自动进程,在一定时间后会杀死其他进程。PHP超时会产生500或502个错误,而不是。谢谢您的示例,我会的试试这个。