请教,怎么能让php页面不去等待system所调用的命令的返回结果?

时间:2023-01-31 12:47:17
请教,怎么能让php页面不去等待system所调用的命令的返回结果?我想让system把这个命令挂到系统进程后就直接执行下面的语句,因为这个命令会执行很长时间,我不想让它等,能否实现?或者用其他函数可以替代system?

8 个解决方案

#1



<?php
system ("sleep 10 > /dev/null &")
?>


后台执行即可,但是切记,必须将输出重订向。否则后台执行也没用。如果需要若干时间后查看结果,则可以重订向到一个文件,稍后php查看文件即可。


<?php
system ("ping -c 5 127.0.0.1 > test.log &")
?>

#2


mark

#3


期待.
通常都做成的计划任务在后台处理.
要是php页面上,总是得要开一个...

#4


看到一楼的回复了.感觉不错.

#5


谢谢各位。
其实我的目的是想实现一个程式在服务器上每隔一段时间就执行。去监控一些报表功能。开始我的想法是:在程式中写死循环,用sleep控制间隔,但是发现这样很吃内存。后来又想用两个程式去实现,a.php 调用b.php ,b.php 调用a.php ,当然这两个程式都是用php.exe 调用的。但是这样就会出现一个问题,就是进程会无限增多,因为要等待system,所以问了这个问题。
现在,我是同3楼所说用计划任务去实现的。
刚才看了1楼的回答,可是没太看懂system ("sleep 10 > /dev/null &")
这句话的意思啊?
我试了一下。
$path = .....//php.exe的路径
$file = .....//要执行的文件
system("".$path." ".$file." >1.log ");
可是我发现这样不能执行啊,请指教?

#6


在类UNIX系统下的CLI模式 PHP是可以多线程的 
写个守护进程死循环 子线程完成退出 
这样能很好解决内存和CPU的问题而且程序的健壮性会更好

而且PHP脚本可以在开机的时候自动运行 完全符合LZ的需要

#7


1.把要执行的命令写入一个批处理文件中.
2.用PHP执行批处理.

没有测试,仅供楼主参考.

#8


引用 7 楼 ohko 的回复:
1.把要执行的命令写入一个批处理文件中. 
2.用PHP执行批处理. 

没有测试,仅供楼主参考.

谢谢,有测试,效果跟php 直接调用一样。
正在研究6楼所说的。。。。。。

#1



<?php
system ("sleep 10 > /dev/null &")
?>


后台执行即可,但是切记,必须将输出重订向。否则后台执行也没用。如果需要若干时间后查看结果,则可以重订向到一个文件,稍后php查看文件即可。


<?php
system ("ping -c 5 127.0.0.1 > test.log &")
?>

#2


mark

#3


期待.
通常都做成的计划任务在后台处理.
要是php页面上,总是得要开一个...

#4


看到一楼的回复了.感觉不错.

#5


谢谢各位。
其实我的目的是想实现一个程式在服务器上每隔一段时间就执行。去监控一些报表功能。开始我的想法是:在程式中写死循环,用sleep控制间隔,但是发现这样很吃内存。后来又想用两个程式去实现,a.php 调用b.php ,b.php 调用a.php ,当然这两个程式都是用php.exe 调用的。但是这样就会出现一个问题,就是进程会无限增多,因为要等待system,所以问了这个问题。
现在,我是同3楼所说用计划任务去实现的。
刚才看了1楼的回答,可是没太看懂system ("sleep 10 > /dev/null &")
这句话的意思啊?
我试了一下。
$path = .....//php.exe的路径
$file = .....//要执行的文件
system("".$path." ".$file." >1.log ");
可是我发现这样不能执行啊,请指教?

#6


在类UNIX系统下的CLI模式 PHP是可以多线程的 
写个守护进程死循环 子线程完成退出 
这样能很好解决内存和CPU的问题而且程序的健壮性会更好

而且PHP脚本可以在开机的时候自动运行 完全符合LZ的需要

#7


1.把要执行的命令写入一个批处理文件中.
2.用PHP执行批处理.

没有测试,仅供楼主参考.

#8


引用 7 楼 ohko 的回复:
1.把要执行的命令写入一个批处理文件中. 
2.用PHP执行批处理. 

没有测试,仅供楼主参考.

谢谢,有测试,效果跟php 直接调用一样。
正在研究6楼所说的。。。。。。