ລາຍການຫົວເລື່ອງ
ຢ່າງຫຼາຍຂອງການເປັນເວັບໄຊທ໌ທີ່ກ່ຽວຂ້ອງການຮຽນຮູ້ໃຫມ່ເວັບໄຊທ໌ WordPress, ຫນ້າ PHP ແມ່ນຫວ່າງເປົ່າເປັນເວລາດົນນານ.
ຫຼັງຈາກນັ້ນ, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຕໍ່ໄປນີ້ຈະປາກົດ:
Fatal error: Maximum execution time of 30 seconds exceeded in ......ຂ້ອນຂ້າງງ່າຍດາຍ, ມັນຫມາຍຄວາມວ່າເວລາປະຕິບັດ PHP ເກີນຂອບເຂດຈໍາກັດ 30 ວິນາທີ.
Chen Weiliangຂໍ້ຜິດພາດນີ້ຍັງເຄີຍພົບມາກ່ອນ, ແລະບົດຄວາມນີ້ສະຫຼຸບວິທີການຈັດການຄວາມຜິດພາດ.
ວິທີການແກ້ໄຂຄວາມຜິດພາດ?
ໂດຍພື້ນຖານແລ້ວ, ມີ 3 ວິທີທີ່ຈະຈັດການກັບຄວາມຜິດພາດນີ້:
- ແກ້ໄຂໄຟລ໌ການຕັ້ງຄ່າ php ໄຟລ໌ php.ini
- ການໃຊ້ຟັງຊັນ ini_set().
- ໃຊ້ຟັງຊັນ set_time_limit()
1) ແກ້ໄຂໄຟລ໌ການຕັ້ງຄ່າ php ໄຟລ໌ php.ini
ຊອກຫາໄຟລ໌ php.ini ແລະຊອກຫາມັນຢູ່ໃນໄຟລ໌ນີ້:
max_execution_time = 30 ;
ໃນເສັ້ນນີ້, ກໍານົດຕົວເລກ 30 ກັບຄ່າທີ່ຕ້ອງການ (ໃນວິນາທີ).
ມັນຍັງສາມາດຖືກແກ້ໄຂໂດຍກົງກັບ:
max_execution_time = 0; //无限制
ໃຫ້ສັງເກດວ່າການປິດເປີດໃຫມ່ແມ່ນຕ້ອງການຫຼັງຈາກການດັດແກ້Linuxເຊີບເວີ.
2) ໃຊ້ຟັງຊັນ ini_set().
ສໍາລັບຜູ້ທີ່ບໍ່ສາມາດດັດແປງ php.iniສື່ ໃໝ່ປະຊາຊົນ, ສາມາດໃຊ້ຟັງຊັນ ini_set() ເພື່ອປ່ຽນກໍານົດເວລາການປະຕິບັດສູງສຸດ.
ເພີ່ມລະຫັດຕໍ່ໄປນີ້ຢູ່ເທິງສຸດຂອງໂປຣແກຣມ:
ini_set('max_execution_time','100');- ການຕັ້ງຄ່າຂ້າງເທິງແມ່ນ 100 ວິນາທີ, ທ່ານຍັງສາມາດຕັ້ງມັນເປັນ 0, ຊຶ່ງຫມາຍຄວາມວ່າບໍ່ຈໍາກັດເວລາປະຕິບັດ.
3) ໃຊ້ຟັງຊັນ set_time_limit()
ຢູ່ເທິງສຸດຂອງໂຄງການເພີ່ມ:
set_time_limit(100);
- ນີ້ຫມາຍຄວາມວ່າກໍານົດເວລາປະຕິບັດສູງສຸດແມ່ນ 100 ວິນາທີ.
- ແນ່ນອນ, ພາລາມິເຕີຍັງສາມາດຖືກກໍານົດເປັນ 0, ຊຶ່ງຫມາຍຄວາມວ່າບໍ່ຈຳກັດ∞。
ລາຍລະອຽດຂອງຟັງຊັນ set_time_limit:
void set_time_limit ( int $seconds )
ສິ່ງທີ່ຟັງຊັນນີ້ເຮັດແມ່ນກໍານົດເວລາ (ເປັນວິນາທີ) ທີ່ສະຄິບຖືກອະນຸຍາດໃຫ້ແລ່ນ.
- ຖ້າການຕັ້ງຄ່ານີ້ເກີນ, ສະຄຣິບຈະສົ່ງຄືນຂໍ້ຜິດພາດທີ່ຮ້າຍແຮງ.
- ຄ່າເລີ່ມຕົ້ນແມ່ນ 30 ວິນາທີ, ຖ້າຄ່ານີ້ມີຢູ່, ມັນແມ່ນຄ່າທີ່ກໍານົດໄວ້ໃນ max_execution_time ໃນ php.ini.
- ເມື່ອຟັງຊັນນີ້ຖືກເອີ້ນ, set_time_limit() ຈະເລີ່ມການນັບເວລາໝົດເວລາຄືນໃໝ່ຈາກສູນ.
ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ຖ້າເວລາຫມົດເວລາເລີ່ມຕົ້ນເປັນ 30 ວິນາທີ, ແລະເມື່ອ script ແລ່ນສໍາລັບ 25 ວິນາທີ, ໂທຫາ.set_time_limit(20), ສະຄຣິບສາມາດແລ່ນໄດ້ທັງໝົດ 45 ວິນາທີກ່ອນທີ່ຈະໝົດເວລາ.
ອັນນີ້ໃຊ້ບໍ່ໄດ້ເມື່ອ php ເຮັດວຽກຢູ່ໃນໂຫມດປອດໄພ.
ໂໝດປອດໄພສາມາດປິດໄດ້:
- 在
php.iniຕັ້ງ safe_mode ເປັນ off ໃນ . - ຫຼືປ່ຽນ
php.iniກໍານົດເວລາໃນ .
set_time_limit ຕົວຢ່າງ
ຖ້າ Safe Mode ບໍ່ເປີດ, ຕົວຕິດຕັ້ງຈະເຮັດວຽກເປັນເວລາ 25 ວິນາທີ.
ຕົວຢ່າງ:
<?php
if(!ini_get('safe_mode')){
set_time_limit(25);
}ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "ການແກ້ໄຂຂໍ້ຜິດພາດຂອງເວລາປະຕິບັດສູງສຸດຂອງ 30 ວິນາທີເກີນໃນ PHP", ເຊິ່ງເປັນປະໂຫຍດສໍາລັບທ່ານ.
ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-1481.html
