4

我在使用 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 内部服务器错误。错误日志中的实际错误如下:

[2014 年 7 月 22 日星期二 23:21:19] [5435820] [fcgid:warn] [客户端 97.115.27.65:60638] mod_fcgid:读取数据超时 120 秒,参考http://www.gbamedical.com/shoppe/05ad01min05 /index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f

[2014 年 7 月 22 日星期二 23:21:19] [5435820] [核心:错误] [客户端 97.115.27.65:60638] 标头之前的脚本输出结束:index.php,引用者http://www.gbamedical.com/shoppe /05ad01min05/index.php?controller=AdminImport&token=62fefdea84f98bf2f436dafc040b6c1f

我究竟做错了什么?我已经尝试过使用较小的图片并且它可以工作,但是我使用的供应商的数据提要没有 1400 件商品的较小图片,而且让它们更小是一项可怕的工作。

提前感谢您提供的任何帮助。

特雷弗

4

4 回答 4

0

我的第一个想法是set_time_limit(0)可以解决这个问题,但是流操作不计入执行时间(除非在 Windows 上),因此根据您从 prestashop 下载文件的方式,它实际上可能不计入执行时间(我猜 fopen() 不会)。

显然,这是一个 fcgid 特定的问题。您需要(取决于您的版本)将此添加到您的 fcgid.conf:

FcgidIOTimeout 180

它曾经是 IPCCommTimeout。该值以秒为单位(手册在此处)。希望这会有所帮助。

于 2014-07-25T12:13:24.383 回答
0

对于您的测试环境,将图像添加到本地提供的 url 并更新您的 csv 以反映该更改

http://localhost/importimages/image_name.jpg

然后为您的生产环境做类似的事情。

于 2014-07-24T03:55:02.770 回答
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 进程。希望这可以帮助

于 2015-05-20T13:17:38.707 回答
0

我有同样的问题。我使用 Centos 6 和 fcgi。我在 /etc/httpd/conf.d/fcgid.conf 中设置

MaxRequestLen 1073741824
FcgidBusyTimeout 6000

当我导入 csv 我的导入过程作为后台进程工作

于 2015-09-13T10:51:41.500 回答