السلام عليكم ورحمة الله،،
عندي موضوع يحتاج الى خبرة في مجال ال php وارجو ان نحصل على دعم جميع الخبراء من الاعضاء والمشرفين،
الموضوع يا جماعة الخير، اني اريد ان اقوم بتنفيذ ملف .bat عن طريق لغة ال php حيث ان الغاية من استخدام ال php هو عرض المخرجات التي يقوم بها ملف bat للمستخدم لجعله دائما يعلم ما الذي يحصل في ال background
ملف البات هو ملف بسيط يحتوي على ping 127.0.0.1 او مثلا تنفيذ اوامر معينة عن طريق cmd.exe
اولا: قمت بانشاء ملف تكست وقمت بالكتابة بداخله ping 127.0.0.1 ثم قمت بحفظ الملف باسم ping.bat
ثانيا: قمت بكتابة php script كالتالي:
$start=microtime(true);
system('ping.bat > log.txt');// تحويل المخرجات لملف تكست
Read_log('log.txt');//طباعة اخر 3 مخرجات فقط للمستخدم عن طريق الدالة المكتوبة في الاسفل
function Read_log($file)
{
$readin=array();
$readin=file($file);
$count=0;
$readin_count=count($readin);
for($count=$readin_count-3;$count<$readin_count;$count++)
{
//if(isset($readin[$count]))
echo $readin[$count]."<br/>";
}
}من المعلوم لدينا ان الدالة system او exec او passthru جميعها تعمل بالية انه عند اتمام وتنفيذ الاوامر تقوم بارجاع ال output وذلك فقط عند انتهاء العملية،
الذي اريد عمله هو انه عند تنفيذ ping 127.0.0.1 ان اعرض العمليات التي تتم للمستخدم بحيث تظهر له النتائج line-by line يعني:
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ولكن سطر بعض سطر وكاننا ننظر الى command prompt
اتمنى ان اجد الحل لديكم
بالتوفيق