php - 在本地主机上使用 crontab 的 cronjob 没有结果

标签 php mysql wordpress cron

我尝试在 Linux 本地主机下使用 cronjob 每 1 分钟更新一次 mysql 表,但没有成功。我正在使用 wordpress 与数据库建立连接。到目前为止我所做的:

在终端中,我使用以下命令打开 crontab:

 crontab -e

并输入:

*/1 * * * * /usr/bin/php /var/www/.../myscript.php   

我保存了更改并检查了/var/spool/cron/crontabs 中的文件。

myscript.php 的内容:

<?php
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = $_SERVER['REQUEST_URI'];
$my_url = explode('wp-content' , $url); 
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];

include_once $path . '/wp-config.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';

global $wpdb;

$wpdb->query("INSERT INTO mytable (id) VALUES ('1')");

?>

当我从浏览器运行 myscript.php 时,该表会更新。我做错了什么?

最佳答案

您意识到您没有网络服务器,因此 $_SERVER 变量不会有 SERVER_NAME 和 REQUEST_URI?

因为 $path 永远不会被正确填写,并且您所需的文件将无法加载。

通常您会看到一些通知(如果不是这种情况,则说明您的 php.ini 配置不正确),但代码仍应运行。 $path 只会保存“/”,从而从服务器的根目录加载所有内容。
文件不存在,所以它不起作用。

如果您需要以这种方式确定您的路径(在浏览时),您将需要确定您是否正在浏览或正在 CLI 中运行它。
例如:

if (php_sapi_name() === 'cli') {
    $path = 'PATH THAT YOU KNOW, probably /var/www';
} else {
    $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    $url = $_SERVER['REQUEST_URI'];
    $my_url = explode('wp-content' , $url);
    $path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
}

关于php - 在本地主机上使用 crontab 的 cronjob 没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873564/

相关文章:

PHP, MYSQL : Order by date but empty dates last not first

php - 在 simplehtmldom 中删除 cdata

php - 将简码添加到 woocommerce 产品页面

javascript - 无需滚动的 Wordpress Jquery 动画

javascript - 如何从 php 服务器获取带有 $.ajax 的 zip

php - 如何修复我的 "PHP Warning: A non-numeric value encountered"错误?

mysql - JOIN 两个表返回值,但是当我使用 LEFT JOIN 时,它会返回语法错误

mysql - 使用 SQL 查询从 MySQL 字段中存储的价格中删除 20%?

mysql - 相交MySql

php - 在导航中使用语言按钮切换语言 Wordpress