【问题标题】:PHP randomly cuts offPHP随机切断
【发布时间】:2011-09-06 07:39:54
【问题描述】:

我制作了一个非常基本的网站,它采用一组图像 URL,对其进行压缩,然后返回压缩位置。问题是脚本有时会中断。

通常会发生以下一种情况:

  • 并非所有图片都被复制
  • 并非所有图片都被复制,最后一张图片的文件大小为 0
  • 有时 ajax 调用不会运行错误或成功回调

这是因为服务器只允许脚本执行一定的时间吗?它似乎确实适用于较少的图片。我能做些什么?

我有以下设置:

  • max_execution_time 10
  • max_file_uploads 20
  • max_input_nesting_level 64
  • max_input_time 10

另外,set_time_limit 被禁用。

我试过 ini_set('max_execution_time', 300);什么都没有改变

编辑:可能是一个非常愚蠢的问题,但是如果我在一定时间后执行另一个 PHP 页面,如果脚本不会在限制之前完成,它会改变什么吗?

我正在使用:

<?php
    include('zip2.php');
    header("content-type: text/javascript"); 


    function err($que){
        $obj->err = $que;
        echo $_GET['callback']. '(' . json_encode($obj) . ');';
        die;
        }
    if(!count($_GET['pictures'])>0){die;}
    $tmpp = tempnam('userzips','mod');
    unlink($tmpp);
    $loc = 'userzips/'.basename($tmpp);
    mkdir($loc);
    $a=$_GET['pictures'];
    for($i=0;$i<count($a);$i++){
        copy($a[$i],$loc.'/'.basename($a[$i])) or err("didn't zip");
        }
    Zip($loc,$loc.'/pictures.zip') or err("didn't zip");
    $obj->loc = 'http://mysite.com/'.$loc.'/pictures.zip';
    $obj->allgood = true;
    echo $_GET['callback']. '(' . json_encode($obj) . ');';

?>

它有时会起作用,但有时不会用于相同的输入。这才是真正吸引我的地方。

【问题讨论】:

  • 您是否启用了错误报告?
  • 由于您至少有两个完全不相关的问题(未调用 AJAX 回调和服务器端问题)并且没有绝对没有调试信息,我建议您休息一下以摆脱沉浸在众多问题中,然后查看您的代码并将其简化到可以成功重现一个问题的程度(例如,创建一个新的 php 页面并模拟 100 个 URL 的输入)。顺便说一句,一个非常基本的网站是echo 'Hello, world';。你的很复杂。此外,请检查您的 apache 错误日志以了解可能发生的任何错误。

标签: php


【解决方案1】:

upload_max_filesize 和 post_max_size 也可以是原因

upload_max_filesize=100M
post_max_size=105M
max_execution_time=600
max_input_time=600

复制时尝试检查错误

if(!@copy('http://someserver.com/somefile.zip','./somefile.zip'))
{
    $errors= error_get_last();
    echo "COPY ERROR: ".$errors['type'];
    echo "<br />\n".$errors['message'];
} else {
    echo "File copied from remote!";
}

我也听说url有空格的时候copy有问题

【讨论】:

  • 如果我复制它,它是否算作上传?
  • no 它没有 =) 我第一次没有理解问题,所以问题出在其他 .. 你用 curl 复制图像吗?
  • 否,使用复制(externalurl,serverurl);
  • 当然。只是有点尴尬:D.
  • 另外,我是否使用 ini_set 设置它们?我试过了,但它没有改变任何东西或给出错误
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多