使用unix作为后台进程运行php脚本
我正在尝试使用unix运行名为daemon.php的php脚本(如下),作为后台进程使用unix作为后台进程运行php脚本,php,unix,background-process,Php,Unix,Background Process,我正在尝试使用unix运行名为daemon.php的php脚本(如下),作为后台进程 #!/usr/bin/php <?php $count = 0; while(true){ $count = $count + 1; file_put_contents('daemon1.log', $count, FILE_APPEND); sleep(1); } ?> 文件deamon1.log开始写入。此外,如果我输入命令: ps | grep php 我把它弄
#!/usr/bin/php
<?php
$count = 0;
while(true){
$count = $count + 1;
file_put_contents('daemon1.log', $count, FILE_APPEND);
sleep(1);
}
?>
文件deamon1.log开始写入。此外,如果我输入命令:
ps | grep php
我把它弄出去了
10573 ttys000 0:00.20 php daemon.php
如果我尝试使用以下命令将其作为后台进程运行
php daemon.php &
ps | grep php
我把控制台拿出来
[1] 10584
指挥部呢
php daemon.php &
ps | grep php
返回
10584 ttys000 0:00.02 php daemon.php
但是没有任何东西写入deamon1.log。有人能告诉我我做错了什么吗?试试另一种方法
$file_handler = fopen( 'daemon1tempname.log', 'a+') or die ('Can not work with the File!');
$count = 0;
while(true){
$count = $count + 1;
fwrite($file_handler, "Test {$count}\n" );
sleep(1);
}
fclose($file_handler);
请注意文件的不同名称。只需确保使用新文件即可。
如果有效,请使用所需的文件进行测试。
如果这不起作用,那么您就知道这是一个权限问题。您使用的是什么版本的Unix?我在GNU/Linux Debian下运行它,没有任何问题。我怀疑用户和文件写入权限有问题。cli用户和apache用户将不会是sameI,因为我使用的是11.4.2版本更改权限没有帮助以root身份登录,
su apache_user-c php daemon.php
查看发生了什么如果不关闭文件,则不会看到任何外部写入的内容。