Làm thế nào để tăng thời gian chờ giao dịch? Tôi muốn tải lên video nhưng kích thước lớn của video không được tải lên?
Nó ném lỗi The process *** exceeded the timeout of 60 seconds.
Làm thế nào để tăng thời gian chờ giao dịch? Tôi muốn tải lên video nhưng kích thước lớn của video không được tải lên?
Nó ném lỗi The process *** exceeded the timeout of 60 seconds.
Câu trả lời:
Bạn cần thay đổi một số cài đặt trong php.ini của mình:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds
Việc đặt PHP.ini của bạn có phụ thuộc vào môi trường của bạn hay không, thêm thông tin: http://php.net/manual/en/ini.list.php
Bạn cũng có thể làm trong thời gian chạy bằng cách sử dụng
set_time_limit(100);
http://php.net/manual/en/ Chức năng.set-time-limit.php
hoặc trong vhost-config của bạn
php_admin_value max_execution_time 10000
Có giới hạn thời gian thực thi toàn cầu là THẤP chủ yếu là một ý tưởng hay vì lý do hiệu suất trên các ứng dụng không đáng tin cậy. Vì vậy, bạn có thể muốn chỉ cho phép những tập lệnh đó chạy lâu hơn mà điều đó hoàn toàn phải làm.
ps: Đừng quên post_max_size và upload_max_filesize (giống như câu trả lời đầu tiên đã nói)
Để hoàn thành câu trả lời của Hannes.
Bạn cần thay đổi một số cài đặt trong php.ini của mình:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Nếu ai đó muốn đặt không giới hạn (tôi không biết tại sao nhưng nếu bạn muốn), bạn có thể đặt thời gian thành 0:
Bạn cần thay đổi một số cài đặt trong php.ini của mình:
upload_max_filesize = 0
max_execution_time = 0
Và nếu bạn không biết php.ini của mình ở đâu. Bạn có thể tạo một tệp "name.php" trong máy chủ của mình và đặt:
<?php phpinfo(); ?>
Và trên trang web của bạn, bạn có thể thấy cấu hình của php.ini và nó được đánh dấu ở đâu.
Nếu bạn không thể truy cập php.ini của mình, bạn có hai tùy chọn khác.
Bạn có thể đặt dòng này trực tiếp trong tệp "name.php" của mình nhưng tôi không tìm thấy upload_max_filesize cho tùy chọn này:
set_time_limit(0);
Hoặc trong ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
nếu những gì bạn cần làm chỉ cụ thể cho 1 hoặc 2 trang, tôi khuyên bạn nên sử dụng set_time_limit để nó không ảnh hưởng đến toàn bộ ứng dụng.
set_time_limit(some_values);
nhưng tất nhiên 2 giá trị này (post_max_size & upload_max_filesize) phải được điều tra.
bạn có thể đặt nó qua hàm ini_set
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
hoặc trực tiếp trong tệp php.ini như phản hồi ở trên của Hannes, hoặc thậm chí đặt nó là .htaccess như bên dưới
php_value upload_max_filesize 2M
php_value post_max_size 20M
Để bổ sung cho các câu trả lời ở trên, bạn có thể sử dụng set_time_limit()
hàm:
http://php.net/manual/en/ Chức năng.set-time-limit.php
truyền 0
dưới dạng đối số sẽ làm cho tập lệnh của bạn chạy không giới hạn thời gian.
Nếu bạn tình cờ sử dụng máy chủ Microsoft IIS , ngoài cài đặt php.ini được đề cập bởi những người khác, bạn có thể cần tăng cài đặt thời gian chờ thực thi cho ứng dụng PHP FastCGI trong Trình quản lý máy chủ IIS:
Bước 1) Mở Trình quản lý máy chủ IIS (thường trong Trình quản lý máy chủ trong Menu Bắt đầu, sau đó Công cụ / Dịch vụ Thông tin Internet (IIS) ).
Bước 2) Nhấp vào kết nối chính (không dành riêng cho bất kỳ miền cụ thể nào).
Bước 3) Trong phần IIS , tìm Cài đặt FastCGI (hiển thị bên dưới).
Bước 4) Trong đó, click chuột phải vào ứng dụng PHP và chọn Edit ... .
Bước 5) Kiểm tra thời gian chờ (hiển thị bên dưới).
Trong trường hợp của tôi, thời gian chờ mặc định ở đây là 70 và 90 giây; trước đây là nguyên nhân gây ra Lỗi máy chủ nội bộ 500 trên các tập lệnh PHP mất nhiều hơn 70 giây.
Tôi biết bạn đang hỏi cụ thể về thời gian chờ của PHP, nhưng điều mà dường như chưa ai đề cập đến là cũng có thể có thời gian chờ trên máy chủ web và nó có thể trông rất giống với thời gian chờ của PHP.
Vì vậy, nếu bạn đã thử:
Và bạn đã kiểm tra bằng hàm phpinfo () rằng max_execution_time thực sự đã được tăng lên, sau đó bạn có thể muốn thử thêm nó vào .htaccess để đảm bảo rằng chính Apache sẽ không hết thời gian:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Thông tin thêm tại đây: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despx-ini-set/
Đầu tiên kiểm tra php.ini
đường dẫn tệp bằng cách phpinfo()
; và sau đó thay đổi các thông số PHP.INI
:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
khởi động lại Apache
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Lưu ý : bạn cũng có thể sử dụng lệnh để tìm php.ini
trong Linux
locate `php.ini`
Nếu bạn không thể chỉnh sửa php.ini (ví dụ: trên máy chủ của bạn), bạn có thể cố gắng thay đổi các tham số php.ini từ trong mã php của mình. Thử:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Nếu cách đó không hiệu quả, hãy thử đặt 'set_time_limit' theo cách tương tự, ngoài ra, tôi muốn nói rằng lựa chọn duy nhất của bạn là liên hệ với máy chủ của bạn. Không thể sửa đổi các cài đặt này khi ở chế độ an toàn.
Kiểm tra xem bạn có đang ở chế độ an toàn hay không - nếu không - hãy đặt giới hạn thời gian (Giá trị cục bộ) thành những gì bạn muốn:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Bạn không thể đặt giới hạn thời gian theo cách này nếu chế độ an toàn 'bật'.
tùy chọn: nếu bạn đặt cấu hình về php.ini nhưng vẫn không tải lên được
-đây là chức năng php để kiểm tra mã lỗi
$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
echo $error_type[$status_code];
exit;
}
Để thực sự tăng giới hạn thời gian, trước tiên tôi muốn nhận được giá trị hiện tại. set_time_limit
không phải lúc nào cũng tăng giới hạn thời gian. Nếu giá trị hiện tại (ví dụ từ php.ini
hoặc trước đây được đặt) cao hơn giá trị được sử dụng trong lệnh gọi hiện tại của set_time_limit
, nó sẽ giảm giới hạn thời gian!
Vì vậy, những gì với một người trợ giúp nhỏ như thế này?
/**
* @param int $seconds Time in seconds
* @return bool
*/
function increase_time_limit(int $seconds): bool
{
return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));
}
// somewhere else in your code
increase_time_limit(180);
Xem thêm: Nhận max_execution_time trong PHP script