我在用CSV文件导入产品时遇到了麻烦。
我试图上传一个CSV文件与大约1400个产品…大多数都有三张左右的图片. .. .但是这些图片非常大,有3-4兆字节。到目前为止,在测试过程中,我只尝试过从一个包含5个项目的CSV文件导入。
我最初是得到一个错误,在prestshop表明我的产品的图片无法复制。产品是进口的,只是没有照片。我对此进行了研究,发现PHP.INI文件需要更新。我使用以下参数完成了此操作:
<?php
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
memory_limit = 256M
max_execution_time = 120
max_input_vars = 3000;
suhosin.post.max_vars = 3000;
suhosin.request.max_vars = 3000;
?>
我的PHP信息文件在这里:www.gbamedical.com/info.php
现在我得到一个500内部服务器错误。错误日志中的实际错误如下所示:
[Tue Jul 22 23:21:19 2014] [5435820] [fcgid:warn] [client 97.115.27.65:60638] mod_fcgid: read data timeout in 120秒,referer http://www.gbamedical.com/shoppe/05ad01min05/index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f
[Tue Jul 22 23:21:19 2014] [5435820] [core:error] [client 97.115.27.65:60638]脚本输出结束前的头:index.php, referer http://www.gbamedical.com/shoppe/05ad01min05/index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f
我做错了什么?我已经尝试过小一些的图片,它可以工作,但是我使用的供应商的数据源没有1400个项目的小图片,这是一个怪物的工作,使它们更小。
对于您可能提供的任何帮助,事先表示感谢。
特雷福
对于您的测试环境,将图像添加到本地服务的url并更新csv以反映该更改
http://localhost/importimages/image_name.jpg
然后在您的生产环境中执行类似的操作。
我的第一个想法是set_time_limit(0)将修复此问题,但流操作不计入执行时间(除非在windows上),因此取决于您如何从prestashop下载文件,它可能实际上不计入执行时间(我猜fopen()不会)。
显然,这是fcgid特有的问题。您需要(取决于您的版本)将此添加到fcgid.conf:
FcgidIOTimeout 180
原来是IPCCommTimeout。该值以秒为单位(手册在这里)。
看看这篇文章:
https://serverfault.com/questions/80929/disable-the-timeouts-on-apache-httpd-and-fastcgi你需要传递给fastcgi进程的参数是:-idle-timeout 360
你可以调整值(这里:360)以适应你的需要
调整/etc/apache2/mods-enabled/fastcgi.conf
。
FastCgiExternalServer
。 我的配置:
<IfModule mod_fastcgi.c>
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 360
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
这会让你的apache等待更长时间来完成fastcgi进程。希望对大家有所帮助
我也有同样的问题。我使用Centos 6和fcgi。我在/etc/httpd/conf.d/fcgid.conf
MaxRequestLen 1073741824
FcgidBusyTimeout 6000
当我导入csv时我的导入进程作为后台进程