后台挂起执行php文件

        开发的时候经常会遇到要执行的文件运行时间很长的问题。

这时,我们可以把要执行的文件放到后台调起慢慢执行。又可以先进行手头的其他事情。又要是用万能的虚拟机啦~~~~~


①新建2.php文件

<?php
$isDev = 'real';
if ($argc >= 2)
{
    if ($argv[1] == 'dev')
    {
        $isDev = 'dev';
        define('ENV', 2);
    }
}

$uid = isset($argv[2]) ? intval($argv[2]): 0;
echo "{$uid} \n";

$i=1;
while(1)
{
    if($i > 50)
    {
        break;
    }
    $num = $i++;
    echo $num."\n";
    sleep(5);
}

②新建1.php,调用执行2.php文件

<?php
$cmd = 'nohup /usr/local/php/bin/php '.'/usr/local/nginx/html/www.ck.com/2.php dev uid  >> /usr/local/nginx/html/www.ck.com/test.log 2>&1 &';
exec($cmd);


调起执行有三种方式。

第一种:命令行模式下 执行1.php文件(后台调起执行2.php),然后从新打开一个命令行窗口,查看执行日志

[root@bogon www.ck.com]# php 1.php
[root@bogon www.ck.com]# tail -f test.log
0
1
2


第二种:不新建1.php文件,直接在命令行模式下,后台调起执行2.php文件

[root@bogon www.ck.com]# nohup /usr/local/php/bin/php 2.php dev uid >> /usr/local/nginx/html/www.ck.com/test.log 2>&1 &

查看执行文件的进程号:ps -aux | grep 2.php

[root@bogon ~]# ps -aux | grep 2.php
root       4047  0.0  0.9 247540  9604 pts/0    S    16:18   0:00 /usr/local/php7/bin/php 2.php dev uid
root       4105  0.0  0.0 112676   992 pts/2    S+   16:19   0:00 grep --color=auto 2.php




第三种php在linux中执行外部命令(反引号的使用),新建test.php文件

<?php
$a = `nohup /usr/local/php/bin/php 2.php dev uid >> /usr/local/nginx/html/www.ck.com/test.log 2>&1 &`;
[root@bogon www.ck.com]# php test.php
[root@bogon www.ck.com]# nohup: 重定向标准错误到标准输出

冷暖自知一抹茶ck

扩展:命令行执行php文件,下载图片
①新建 test.php
<?php
$command         = `curl -s 'https://cksite.cn/Upload/image/ueditor/20180122/1516589726849116.png'`;        
$command         = trim($command);
var_dump($command);
file_put_contents('1516589726849116.png',$command);
②[root@bogon www.ck.com]#  php test.php   执行该文件,即可下载图片到本目录


扩展: linux  > 和 >> 、< 区别

>>和>都属于输出重定向,<属于输入重du定向。

大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)

小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入

    >> 是追加内容

    > 是覆盖原有内容




相关资料:

    

    php在linux中执行外部命令

   nohup和&后台运行,进程查看及终止 

    如何将我的php脚本以守护进程的方式一直运行?

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论