【问题标题】:I need to run a PHP script I wrote as a task on my server我需要在服务器上运行我作为任务编写的 PHP 脚本
【发布时间】:2019-08-14 02:19:37
【问题描述】:

我需要运行一个 PHP 脚本来抓取网站的数据,并且我需要在我的具有 linux 的 VPS 上运行它。我想把它作为一个任务运行,这样我就可以退出我的 VPS 并且脚本应该继续在后台运行。

我读过有关 CRON 作业的信息,但它更多的是用于安排和重复性任务;但我只需要 PHP 脚本一次。

PHP 中有没有办法做到这一点?请帮忙,我只是这方面的新手。

提前致谢! :)

我已经将它作为 CRON 工作进行了尝试,但它似乎不符合我的确切目的。

所以我从终端像这样运行我的脚本。

php scrapethewebsite.php

然后它显示这个

Started scraping at 10:03:00 20-03-2019


我无法注销或关闭我的 vps/ssh 连接。

我在寻找

php scrapethewebsite.php
Started scraping at 10:03:00 20-03-2019

然后我应该能够注销或关闭我的连接。然后我应该可以关闭我的电脑去散步了..

【问题讨论】:

  • 我稍后会写一个答案。它叫nohup
  • 我不久前写了这个 github.com/ArtisticPhoenix/MISC/blob/master/BgProcess.php - 它可以在 Linux 和 Windows 中通过 PHP 执行后台、非阻塞进程。我应该提到你可以做的是制作一个启动器,这就是你所说的。在那段代码中,您可以启动后台进程。如果这有意义的话。

标签: php linux ssh cron


【解决方案1】:

是的,您可以通过屏幕执行此操作。屏幕大部分时间已经安装在 Linux VPS 中。不过还是可以通过命令获取。

apt-get install screen

它使您能够在 VPS 中拥有多个屏幕,您可以在其中同时运行多个任务。 就像你一样。 获取带有命令的屏幕。

screen -S sessionname

sessionname 将是您的屏幕名称。 你可以用命令/ CTRL + A,然后是 D。 然后您可以通过访问您的 vps 关闭您的腻子或任何工具。 干得好。 有关更多信息,您可以点击此链接。 Screen in Linux

【讨论】:

    【解决方案2】:

    在你的 SSH 会话中运行它,然后你可以点击 X 并关闭它,它仍然会运行

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

    要检查您的文件是否正在运行,请键入此命令

    top
    

    你应该在那里看到 php 文件,然后按空格键更新列表

    ___________________________________________________________________________________

    如果您的 php 脚本不时出现一些错误或者只是执行时间用完,并且您想在它关闭时重新运行它..您必须创建一个 .sh 文件,其中包含一个 while 循环并运行 @ 987654324@就可以了,所以它会在出错后重新运行php文件。

    如果您想在需要不时重新运行的php文件上使用nohup,那么您应该执行以下操作

    $ echo 'while true ; do php scrapethewebsite.php ; done > /dev/null' > ~/php_run_loop.sh
    $ chmod a+x ~/php_run_loop.sh
    $ nohup ~/php_run_loop.sh
    

    注意:如果您的 php 脚本有错误或其他问题,这将导致它无限制地反复运行。

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2017-04-15
      相关资源
      最近更新 更多