我在导入带有CSV文件的产品时遇到问题。
我正在尝试上传包含约1400种产品的CSV文件。 。 。大多数有三张图片左右。 ..但图片相当大,3-4兆字节。到目前为止,在测试时,我只尝试从包含5个项目的CSV文件导入。
我最初在prestashop中收到错误,表示我的产品图片无法复制。产品是进口的,但没有照片。我研究了这个,发现需要更新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:在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个项目的较小图片,并且它是一个让它们变小的MONSTER工作。
提前感谢您提供的任何帮助。
特雷弗
答案 0 :(得分:0)
对于您的测试环境,将图像添加到本地提供的网址并更新您的csv以反映该更改
http://localhost/importimages/image_name.jpg
然后为您的生产环境做类似的事情。
答案 1 :(得分:0)
我的第一个想法是set_time_limit(0)会解决此问题,但流操作不计入执行时间(除非在Windows上),因此根据您从prestashop下载文件的方式,它实际上可能不会计入执行时间(我猜fopen()不会)。
显然,这是一个特定的问题。您需要(取决于您的版本)将此添加到您fcgid.conf:
FcgidIOTimeout 180
以前是IPCCommTimeout。该值以秒为单位(手册为here)。希望这会有所帮助。
答案 2 :(得分:0)
看看这篇文章:
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进程。希望这有帮助