php如何在服务器上一直运行

worktile 其他 48

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要让PHP在服务器上一直运行,最常用的方法是使用守护进程(Daemon)或者定时任务(Cron Job)。下面我将分别介绍这两种方法的具体实现。

    一、使用守护进程(Daemon)

    1. 创建一个PHP脚本,命名为daemon.php,并在其中编写需要一直运行的PHP代码。
    2. 在脚本的开头使用以下代码判断当前是否为子进程,如果是则进行后续逻辑,如果不是则退出。
    if (posix_getpid() != getmypid()) {
        exit;
    }
    
    1. 在脚本的末尾使用以下代码将进程变为守护进程,并使其在后台一直运行。
    posix_setsid();
    
    1. 使用以下命令在服务器上启动该脚本,并将输出日志重定向到一个文件。
    php /path/to/daemon.php > /path/to/log.txt &
    

    这样,脚本将以守护进程的方式在后台一直运行,即使关闭了终端连接也不会中断。此外,你还可以使用pid命令查看脚本的进程ID,使用kill命令停止脚本的运行。

    二、使用定时任务(Cron Job)

    1. 编写一个PHP脚本,命名为task.php,并在其中编写需要定时执行的PHP代码。
    2. 使用以下命令编辑定时任务配置文件。
    crontab -e
    
    1. 在配置文件中添加以下内容,表示每分钟执行一次task.php脚本。
    * * * * * php /path/to/task.php > /dev/null 2>&1
    
    1. 保存并退出配置文件。
    2. 使用以下命令查看当前的定时任务配置。
    crontab -l
    

    这样,脚本将会按照你设定的时间间隔定时执行。你还可以使用crontab -e命令编辑定时任务配置文件,修改执行时间或者添加新的定时任务。

    以上两种方法各有优缺点,根据你的具体需求和服务器环境选择适合的方法。使用守护进程可以实现PHP脚本一直运行,但需要手动启动和停止;使用定时任务则可以定时执行脚本,但无法实现持续运行。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在服务器上让 PHP 一直运行有多种方法。下面是一些常见的方法:

    1. 使用无限循环
      可以编写一个无限循环的脚本。在每次循环中,执行你想要的任务。这样脚本将一直运行下去。不过要注意的是,这种方法可能在某些情况下会导致服务器负载过高,因此需要谨慎使用。可以在循环中添加延迟,以减轻负载。

      <?php
       while(true) {
          // 执行你的任务
          // 比如处理队列、监控任务等
          // 添加延迟
          sleep(1);
       }
      
    2. 使用长时间运行脚本
      可以将 PHP 脚本转变成一个长时间运行的进程。可以使用如下方式将 PHP 脚本后台运行,并且不会随着终端关闭而停止运行。

      nohup php your_script.php > /dev/null 2>&1 &
      

      这样脚本会一直在后台运行,直到手动停止或服务器重启。

    3. 使用守护进程
      守护进程是在后台运行的系统进程,可以在服务器启动时运行,并且在服务器关闭时停止运行。可以使用一些工具来创建和管理守护进程,比如 Supervisor

    4. 使用计划任务
      可以使用计划任务定时运行 PHP 脚本。可以通过配置 cron 来实现计划任务。在 cron 的配置文件中指定 PHP 脚本的路径和运行频率,服务器将会按照指定的频率自动运行脚本。

    5. 使用消息队列
      可以使用消息队列来实现 PHP 的持续运行。将任务放入消息队列中,然后编写一个消费者脚本来消费队列中的任务。这样消费者脚本可以一直运行,并在有任务时执行相应的操作。可以使用工具如 RabbitMQKafka 来实现消息队列。

    无论选择哪种方法,都需要注意服务器资源的使用情况和性能。确保正确处理异常和错误,并且采取适当的措施来监控脚本的运行状态。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要在服务器上一直运行PHP代码,有多种方法可以实现。下面将介绍几种常用的方法。

    1. 使用守护进程(Daemon)模式

    守护进程是一种在后台持续运行的进程,它可以在服务器启动时自动运行,并且不会因为终端关闭而停止。PHP可以通过创建一个守护进程来实现在服务器上一直运行。

    首先,创建一个PHP脚本,比如命名为daemon.php,内容如下:

    <?php
    // 设置脚本永不超时
    set_time_limit(0);
    
    // 运行循环
    while (true) {
        // 在这里写下你的业务逻辑代码
    
        // 休眠一段时间
        sleep(1);
    }
    

    然后,在终端中使用以下命令将该脚本作为守护进程运行:

    php daemon.php > /dev/null &
    

    通过重定向输出到/dev/null,可以将脚本的输出重定向到空设备,避免在后台输出大量的日志信息。

    1. 使用定时任务(Cron Job)

    定时任务是一种在指定的时间间隔内自动运行的任务。可以使用Cron来创建一个定时任务,让服务器上的PHP脚本定期运行。

    编辑crontab文件,添加一个新的定时任务。比如,要每5分钟运行一次脚本,可以使用以下命令编辑crontab文件:

    crontab -e
    

    在文件中添加以下内容:

    */5 * * * * php /path/to/your/script.php
    

    其中,*/5 * * * *表示每5分钟运行一次,php /path/to/your/script.php表示要运行的PHP脚本的路径。

    保存并退出文件后,crontab会自动启动定时任务。

    1. 使用无限循环方式

    该方法适用于有Web服务器和PHP-FPM(FastCGI进程管理器)的情况。可以将服务器上的PHP脚本放在一个无限循环中,以保持脚本的持续运行。

    首先,创建一个PHP脚本,比如命名为loop.php,内容如下:

    <?php
    // 设置脚本永不超时
    set_time_limit(0);
    
    // 运行循环
    while (true) {
        // 在这里写下你的业务逻辑代码
    
        // 休眠一段时间
        usleep(1000000); // 1秒
    }
    

    然后,在终端中使用以下命令将该脚本作为后台任务运行:

    php-fpm -d variables_order=EGPCS -D | php -q /path/to/your/loop.php
    

    这里的php-fpm命令是PHP-FPM进程管理器命令,-d variables_order=EGPCS用于设置全局变量G、P、C、S的读取顺序,-D表示在后台运行,|表示管道,php -q /path/to/your/loop.php用于执行loop.php脚本。

    通过以上几种方法,可以实现在服务器上一直运行PHP代码。选择适合自己需求的方法,并根据具体情况进行使用。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部