当用户使用慢速Internet连接上传大量文件时,我尝试检测PHP脚本执行超时:我应该只警告用户超时。
我在upload.php
和on_shutdown()
内使用register_shutdown_function()
和connection_status()
,我在$timeout
中创建complete.php
标记检测超时。
问题是结果完全错误:我有超时致命错误(没关系),需要致命错误(在函数require($require)
,好像{{1 }}为空)并且$require
未显示。
太糟糕了,我无法弄清楚我错在哪里。这是complete.php
脚本的简短版本:
upload.php
...这是<?php
register_shutdown_function('on_shutdown');
$require = 'complete.php'; // Complete page
sleep(50); // fake timeout for testing
// Do stuff, save files, insert into database...
// This always invoked
function on_shutdown()
{
global $require;
$timeout = connection_status() == 2;
require($require);
}
?>
:
complete.php
答案 0 :(得分:0)
register_shutdown_function( 'on_shutdown'); 仅在脚本执行后才会运行。
“在脚本执行完成或调用exit()之后注册要执行的回调。” - php.net
答案 1 :(得分:0)
而不是尝试超时,您可以检查最大执行时间的值并将其分配给0以进行长时间执行,但不建议安全性为0
$maxExeTime = ini_get('max_execution_time'); //this will get maxumum excetion time for PHP script in seconds
echo $maxExeTime;
你也可以查看下面的全局变量
$postMs = ini_get('post_max_size'); //this will get maxumum size of data to be accepted in $_POST
$upMaxFiles = ini_get('upload_max_filesize'); //this will get maxumum allowed file size for file upload
$noFilesUp = ini_get('max_file_uploads'); //this will get number of files to be load on single request