Bagaimana cara menambah batas waktu transaksi? Saya ingin mengupload video, tetapi video berukuran besar tidak diupload?
Itu melempar kesalahan The process *** exceeded the timeout of 60 seconds.
Bagaimana cara menambah batas waktu transaksi? Saya ingin mengupload video, tetapi video berukuran besar tidak diupload?
Itu melempar kesalahan The process *** exceeded the timeout of 60 seconds.
Jawaban:
Anda perlu mengubah beberapa pengaturan di php.ini Anda:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds
Apakah lokasi PHP.ini Anda bergantung pada lingkungan Anda, informasi lebih lanjut: http://php.net/manual/en/ini.list.php
Anda harus dapat melakukannya selama runtime juga menggunakan
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
atau di vhost-config Anda
php_admin_value max_execution_time 10000
Memiliki batas waktu eksekusi global yang RENDAH sebagian besar merupakan ide bagus untuk alasan kinerja pada aplikasi yang tidak terlalu andal. Jadi, Anda mungkin ingin hanya mengizinkan skrip tersebut berjalan lebih lama yang memang harus dilakukan.
ps: Jangan lupa tentang post_max_size dan upload_max_filesize (seperti jawaban pertama yang diceritakan sudah)
Untuk melengkapi jawaban Hannes.
Anda perlu mengubah beberapa pengaturan di php.ini Anda:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Jika seseorang ingin memasukkan tanpa batas (saya tidak tahu mengapa tetapi jika Anda mau), Anda dapat mengatur waktu ke 0:
Anda perlu mengubah beberapa pengaturan di php.ini Anda:
upload_max_filesize = 0
max_execution_time = 0
Dan jika Anda tidak tahu di mana php.ini Anda. Anda dapat membuat file "name.php" di server Anda dan meletakkan:
<?php phpinfo(); ?>
Dan di situs web Anda, Anda dapat melihat konfigurasi php.ini Anda dan ditandai di mana itu.
Jika Anda tidak dapat mengakses php.ini, Anda memiliki dua opsi lagi.
Anda dapat menyetel baris ini langsung di file "name.php" Anda tetapi saya tidak menemukan upload_max_filesize untuk opsi ini:
set_time_limit(0);
Atau di ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
jika yang perlu Anda lakukan hanya spesifik untuk 1 atau 2 halaman saya sarankan untuk menggunakan set_time_limit agar tidak mempengaruhi keseluruhan aplikasi.
set_time_limit(some_values);
tetapi tentu saja 2 nilai ini (post_max_size & upload_max_filesize) dapat diselidiki.
Anda juga dapat mengaturnya melalui fungsi ini_set
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
atau langsung di file php.ini seperti respon di atas oleh Hannes, atau bahkan set ke iin .htaccess seperti di bawah ini
php_value upload_max_filesize 2M
php_value post_max_size 20M
Sebagai tambahan dari jawaban di atas, Anda dapat menggunakan set_time_limit()fungsi:
http://php.net/manual/en/function.set-time-limit.php
meneruskan 0sebagai argumen akan membuat skrip Anda berjalan tanpa batas waktu.
Jika Anda kebetulan menggunakan server Microsoft IIS , selain pengaturan php.ini yang disebutkan oleh orang lain, Anda mungkin perlu meningkatkan pengaturan batas waktu eksekusi untuk aplikasi PHP FastCGI di IIS Server Manager:
Langkah 1) Buka IIS Server Manager (biasanya di bawah Server Manager di Start Menu, lalu Tools / Internet Information Services (IIS) Manager ).
Langkah 2) Klik pada koneksi utama (tidak spesifik untuk domain tertentu).
Langkah 3) Di bawah bagian IIS , temukan Pengaturan FastCGI (ditampilkan di bawah).
Langkah 4) sinilah, klik kanan aplikasi PHP dan pilih Edit ... .
Langkah 5) Periksa batas waktu (ditampilkan di bawah).
Dalam kasus saya, batas waktu default di sini adalah 70 dan 90 detik; yang pertama menyebabkan 500 Internal Server Error pada skrip PHP yang membutuhkan waktu lebih dari 70 detik.
Saya tahu Anda secara khusus menanyakan tentang batas waktu PHP, tetapi yang tampaknya tidak disebutkan oleh orang lain adalah bahwa mungkin juga ada batas waktu di server web dan itu bisa terlihat sangat mirip dengan batas waktu PHP.
Jadi jika Anda sudah mencoba:
Dan Anda telah memeriksa dengan fungsi phpinfo () bahwa max_execution_time memang telah ditingkatkan, maka Anda mungkin ingin mencoba menambahkan ini ke .htaccess yang akan memastikan Apache sendiri tidak memiliki waktu habis:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Info lebih lanjut di sini: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-desthough-ini-set/
Pertama periksa php.inijalur file dengan phpinfo(); dan kemudian mengubah PHP.INIparameter:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
memulai ulang Apache
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Catatan : Anda juga dapat menggunakan perintah untuk menemukan php.inidi Linux
locate `php.ini`
Jika Anda tidak dapat mengedit php.ini (di server Anda misalnya), Anda dapat mencoba mengubah parameter php.ini dari dalam kode php Anda. Mencoba:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Jika itu tidak berhasil, coba juga setel 'set_time_limit' dengan cara yang sama, di luar itu saya akan mengatakan satu-satunya pilihan Anda adalah menghubungi host Anda. Pengaturan ini tidak dapat diubah saat dalam mode aman.
Uji apakah Anda dalam mode aman - jika tidak - tetapkan batas waktu (Nilai Lokal) sesuai keinginan Anda:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Anda tidak dapat mengatur batas waktu dengan cara ini jika safe mode 'on'.
opsional: jika Anda menyetel konfigurasi tentang php.ini tetapi masih tidak dapat mengunggah
-ini adalah fungsi php untuk memeriksa kode kesalahan
$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;
}
Untuk benar-benar meningkatkan batas waktu, saya lebih suka mendapatkan nilai saat ini terlebih dahulu. set_time_limittidak selalu menambah batas waktu. Jika nilai saat ini (misalnya dari php.iniatau yang sebelumnya ditetapkan) lebih tinggi dari nilai yang digunakan dalam panggilan saat ini set_time_limit, itu akan mengurangi batas waktu!
Jadi ada apa dengan pembantu kecil seperti ini?
/**
* @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);
Lihat juga: Dapatkan max_execution_time dalam skrip PHP