首先使用windows。
我有以下代码:
<?php
error_reporting(E_ALL);
$tiempo_inicio = microtime(true);
exec('C:\wamp\bin\php\php5.5.12\php.exe -e C:\wamp\www\mail.php > /dev/null &');
$tiempo_fin = microtime(true);
echo ($tiempo_fin - $tiempo_inicio);
?>
<?php
$tiempo_inicio = microtime(true);
$logs = fopen("test.txt","a+");
sleep(2);
$tiempo_fin = microtime(true);
fwrite($logs, ($tiempo_fin - $tiempo_inicio)."
");
sleep(4);
$tiempo_fin = microtime(true);
fwrite($logs, ($tiempo_fin - $tiempo_inicio)."
");
sleep(6);
$tiempo_fin = microtime(true);
fwrite($logs, ($tiempo_fin - $tiempo_inicio)."
");
echo 'fin';
?>
但是我希望它不起作用,因为我想要的是在后台运行文件,而无需用户等待完成此文件。
我做错了什么?
答案 0 :(得分:1)
你所说的是一个非阻塞执行(一个进程不会在另一个进程上等待.PHP真的不能很好地执行它(原生反正)因为它是围绕一个线程设计的。不知道你的进程是什么我不能准确评论这个,但我可以提出一些建议
答案 1 :(得分:0)
我过去在Windows上使用pclose
/ popen
和Windows启动命令而不是exec
取得了成功。这样做的缺点是很难对你正在调用的程序中的任何错误做出反应。
我会尝试这样的事情(我今天不在机器上测试这个):
$command_string = 'C:\wamp\bin\php\php5.5.12\php.exe -f "C:\wamp\www\mail.php" -- variablestopass';
pclose(popen("start /B ".$command_string, 'r'));