php – 如何每天执行一次查询并使用cron将结果输出到平面文件?

我有一个PHP / MysqL网站,我想在主页上输出DB /表中的条目数,但我不希望每次用户点击主页时都进行此查询.我希望它每天自动运行一次并将查询结果输出一个平面文件,然后我可以将其包含在内.我认为应该减少一些负荷.

我以前从未做过cron工作,也不熟悉Unix系统/命令.我的网站是一个拥有Plesk控制面板的ISP,我看到一个“crontab”部分,可以让我设置cron作业.

我不太确定要进入什么“命令”.我可以很好地制定查询,但不确定如何将结果输出到我可以通过PHP包含的平面文件.此外,理想情况下,平面文件将出现在Web根目录(与站点的其余部分)并且每天都会覆盖自己,我不想在年底使用365个平面文件.

解决方法:

您应该编写一个独立的PHP脚本来完成所有工作,并将它添加到您的crontab中,如下所示:

0 2 * * * cd /path/to/script; /usr/bin/PHP daily.PHP 1> output.txt 2> errors.log

每隔2点,您的daily.PHP脚本将运行,输出位于output.txt中,并且生成的任何错误(保持display_errors打开)将最终出现在errors.log中.与将查询直接放入cron相比,这有一些优点:

>您不需要将您的MysqL连接详细信息放入cron
>如果需要,您可以包含任何网站的PHP包含文件
>您可以独立测试脚本,而无需等待cron运行它.

将数据包含在PHP页面中的最简单,最安全的方法可能是查询结果数组为serialize(),然后在需要时反序列化():

// daily.PHP
$data = array(
    'rows_in_table_foo' => 2343, // replace this with a query result
    'rows_in_table_bar' => 4321, // replace this with a query result
    );
echo serialize($data);
exit 0;

……并阅读它……

// index.PHP
$data = unserialize(file_get_contents('output.txt'));

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...