157   PHP การใช้งานฟังก์ชั่น ignore_user_abort()​

>> รู้หมือไร่ <<
 
ในการรัน PHP แต่ละครั้งนั้น script อาจจะจบการทำงานก่อนที่ควรจะเป็นหากผู้ใช้ยกเลิก "การเชื่อมต่อ"
แต่ไม่ใช่ว่า PHP จะตรวจสอบตลอดเวลาว่าผู้ใช้ยังเชื่อมต่ออยู่หรือไม่
ซึ่งการตรวจนี้จะทำเฉพาะเวลามีการ "ส่งข้อมูล" ไปยังผู้ใช้ ด้วยการ echo, print หรืออื่นๆ
 
แต่ในบางครั้งเราไม่ต้องการให้ script ของเราตายกลางคัน อยากจะให้มันทำงานให้เสร็จสิ้น
โดยเฉพาะในกรณีที่มีการทำงานที่เกี่ยวข้องกับการอัพเดท ไฟล์/ฐานข้อมูล
หรืออะไรที่จำเป็นต้องทำให้เสร็จสิ้นไม่ว่าจะยังไงก็ตาม
เราสามารถบอก PHP ได้ว่า อย่าฆ่า script ของฉันนะ ด้วยฟังก์ชั่น

ignore_user_abort()​

การทำงานดังนี้

ignore_user_abort(true);
sleep(60); // หยุดโปรแกรมไว้ 1 นาที ซึ่งในระหว่างนี้ ผู้ใช้อาจจะทนไม่ไหว ตัดการเชื่อมต่อไป
echo 'Are you there?'; // ถ้าไม่ใช้ ignore_user_abort(true)
do_something_else(); // ก็จะจบการทำงานก่อนมาถึงบรรทัดนี้​

และในกรณีที่เราใช้ ignore_user_abort(true) แล้ว
แต่ก็ยังต้องการตรวจว่า ผู้ใช้ตัดการเชื่อมต่อไปหรือยัง
เราสามารถใช้ฟังก์ชั่น

connection_aborted()​

เพื่อตรวจสอบว่าผู้ใช้ยังอยู่มั้ย
ซึ่งจะมีประโยชน์ในการลดการทำงานของเซิร์ฟเวอร์
เพราะเราไม่จำเป็นต้องส่งข้อมูลไปให้ผู้ใช้แล้วหากผู้ใช้ไม่อยู่รอรับข้อมูล
 
ignore_user_abort(true);
sleep(60); // หยุดโปรแกรมไว้ 1 นาที ซึ่งในระหว่างนี้ ผู้ใช้อาจจะทนไม่ไหว ตัดการเชื่อมต่อไป
if (!connection_aborted()) {
    echo 'Are you there?'; // ส่งข้อมูลเฉพาะเวลาที่ผู้ใช้ยังรอเราอยู่
}
do_something_else(); // แต่ก็ยังคงทำตรงนี้เหมือนเดิม
 
http://php.net/manual/en/features.connection-handling.php

Credit: Admin(phpinfo.in.th)
Back to Top