สมมติว่าคุณมีเซิร์ฟเวอร์ Linux และการเข้าถึงรูทให้ลองทำเช่นนี้ เป็นวิธีแก้ปัญหาที่ง่ายที่สุดที่ฉันพบ
สร้างไดเร็กทอรีใหม่สำหรับไฟล์ต่อไปนี้และให้สิทธิ์แบบเต็ม (เราสามารถทำให้ปลอดภัยมากขึ้นในภายหลัง)
mkdir test
chmod -R 777 test
cd test
ใส่สิ่งนี้ในไฟล์ที่เรียกว่าbgping
.
echo starting bgping
ping -c 15 www.google.com > dump.txt &
echo ending bgping
หมายเหตุ&
. คำสั่ง ping จะทำงานอยู่เบื้องหลังในขณะที่กระบวนการปัจจุบันย้ายไปยังคำสั่ง echo มันจะ ping www.google.com 15 ครั้งซึ่งจะใช้เวลาประมาณ 15 วินาที
ทำให้ปฏิบัติการได้
chmod 777 bgping
ใส่สิ่งนี้ในไฟล์ที่เรียกว่าbgtest.php
.
<?php
echo "start bgtest.php\n";
exec('./bgping', $output, $result)."\n";
echo "output:".print_r($output,true)."\n";
echo "result:".print_r($result,true)."\n";
echo "end bgtest.php\n";
?>
เมื่อคุณขอ bgtest.php ในเบราว์เซอร์ของคุณคุณควรได้รับคำตอบต่อไปนี้อย่างรวดเร็วโดยไม่ต้องรอประมาณ 15 วินาทีเพื่อให้คำสั่ง ping เสร็จสมบูรณ์
start bgtest.php
output:Array
(
[0] => starting bgping
[1] => ending bgping
)
result:0
end bgtest.php
ตอนนี้คำสั่ง ping ควรทำงานบนเซิร์ฟเวอร์ แทนที่จะใช้คำสั่ง ping คุณสามารถเรียกใช้สคริปต์ PHP:
php -n -f largejob.php > dump.txt &
หวังว่านี่จะช่วยได้!