gpt4 book ai didi

php - 使用 crontab 运行 PHP 脚本

转载 作者:可可西里 更新时间:2023-10-31 22:41:51 24 4
gpt4 key购买 nike

我明白 SO 是为了问题,但无论我查阅了多少教程,我都无法得到我的 crontab工作,我正在建立一个将依赖 crontab 的网站每天晚上重置我的数据库中的特定设置。

这是我的 crontab文件:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
* * * * * /usr/bin/php -q /var/www/html/cron/index.php

如果我尝试 cd/usr/bin/php我明白了

-bash: cd: /usr/bin/php: Not a directory

所以我cd只是/usr/bin/这是我发现的:

-rwxr-xr-x  1 root   root      27216 Feb 10 15:08 pgrep*
lrwxrwxrwx 1 root root 21 Jun 13 09:36 php -> /etc/alternatives/php*
-rwxr-xr-x 1 root root 9049256 Jul 2 11:57 php5*

如果我cd/etc/alternatives我发现:

lrwxrwxrwx  1 root root   13 Jun 13 09:36 php -> /usr/bin/php5*

我回到 bin文件,php5*符号并且是绿色的。

-rwxr-xr-x  1 root   root    9049256 Jul  2 11:57 php5*

我的 PHP 脚本。很简单的。检查 cookie,如果存在,则将其递增 1。然后我在另一页上检查结果。手动这个工作。与 crontab ,无法让它工作。

if (!empty($_COOKIE['cronTest'])) {
$int = $_COOKIE['cronTest'];
$int++;
setcookie("cronTest", $int, time()+3600);
}

最佳答案

您的 cronjob 行看起来有效,因此问题将是以上几点之一。要验证第一个,请尝试在文件中不使用 $_COOKIE 的情况,例如简单

mkdir('/var/www/html/cron/testdir');

只是为了查看文件是否可以访问,并在dir之上创建了一个目录。如果无法访问,则创建一个新组并添加当前用户(通过

查找)
ls -al

在/var/www/html/cron 中)和运行 cronjob 的用户到该组,然后让该组拥有您要运行的文件。请参阅此问题的已接受答案:Set user permissions | Artisan command will not run in code but works fine on command line我发布了一些关于如何做到这一点的时间。

对于 $_COOKIE 问题,您将不得不寻找其他解决方案。例如,使用 Redis 或 Memcached 作为可以通过在线和 cli 配置访问的缓存服务。

考虑添加

1>> /dev/null 2>&1

到您的 cronjob 行的末尾,如果您不这样做并让 cron 每分钟运行一次,您将获得大量日志文件。

为了完整地了解使用 php 和 cli 时可能出现的陷阱,请始终确保提供文件的完整路径。

关于php - 使用 crontab 运行 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com