【问题标题】:Run a php script every 5 seconds by using a shell script使用 shell 脚本每 5 秒运行一次 php 脚本
【发布时间】:2015-07-28 05:17:41
【问题描述】:

我想每 5 秒运行一次 php 脚本。

这就是我所做的:

(essay.sh 文件)

#!/bin/bash

while :
do
    php a_file.php
    sleep 5
done

(简而言之就是php文件)

<?php
// sql call

// sql into $json

$file = 'json.txt';

file_put_contents($file, $json);
?>

当我这样做时没有错误:./essay.sh,但 json.txt 没有刷新(没有任何反应,我已将这两个文件的权限设置为 0755)。

当我在浏览器中使用 a_file.php 的直接 url 时,脚本正在运行,并生成一个新的 json.txt。

感谢您的帮助!

【问题讨论】:

  • 我不认为每 5 分钟运行一次脚本可以完成,除非使用 cronjob。
  • 嗨,我想每 5 秒执行一次,cron 至少限制为 1 分钟
  • 您可以创建一个daemon in PHP,一旦启动(通过 cron 或在系统启动时)基本上永远运行。让守护进程做一些工作,然后休眠 5 秒。你甚至可以根据你的情况分叉进程。
  • 你到底想做什么?即,为什么它需要每 5 秒运行一次?您的问题可能有更有效的解决方案。

标签: php json shell cron crontab


【解决方案1】:

我在我的电脑上试过你的脚本,发现它运行良好。这是我设置的文件权限:

【讨论】:

  • 嗨,我没有来自 shell 的错误,但是 txt 文件没有被 shell 脚本假定加载的 php 文件覆盖。权限是: rwxrwxrwx 用于essay.sh,rwxrwxr-x 用于php 脚本,rwxrwxr-x 用于txt 文件。
  • txt文件创建了吗?检查文件更新时间而不是内容?
  • 是的,时间还不是 ./essay.sh(还)。有没有试过像我一样在php脚本上创建txt文件?
  • @Alex1 将脚本权限更改为 777?
  • 3个文件到777(同一个目录),什么也没有发生
【解决方案2】:

因为您设置的是 0755,所以您需要以与 json 文件所有者相同的用户身份运行脚本。

尝试将权限设置为 775 或以该 json 文件的所有者身份运行脚本。

【讨论】:

  • 嗨,仍然没有任何反应。
  • 尽管如此,你真的应该考虑在 php 中使用 cronjob 而不是 sleep :-)
  • 感谢您对权限的重视
猜你喜欢
  • 2021-08-03
  • 2013-02-04
  • 2013-02-23
  • 2018-10-26
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2014-09-25
  • 2016-07-24
相关资源
最近更新 更多