【发布时间】: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