上下文: 我编写了一个脚本,它从服务器下载图像,将白色设置为透明,并将图像保存在根文件夹中。它还将图像的副本保存在单独的文件夹“图像”中,名称中包含日期和时间。
因为我不确切知道图像何时刷新,所以我将图像的哈希值连同创建日期和文件名一起保存在数据库中。
问题: 我希望脚本每 5 分钟自动运行一次,所以我在我的服务器(Ubuntu Server 12.04)上创建了一个 crontab。Crontab 确实每 5 分钟执行一次脚本,但是它只会将新记录添加到数据库中,而不会保存实际图像。当我尝试通过控制台或网络浏览器手动运行脚本时,它可以正常工作:保存图像并更新数据库记录。
Crontab(以防万一有问题):
*/5 * * * * /usr/bin/php5 -f /var/www/radar.php > /var/www/logPHP.log 2>&1
PHP代码:
include 'mysql.php';
$im = imagecreatefromgif("image_url");
$hash = hash_file('md5', "image_url");
$day = date("j");
$month = date("n");
$year = date("Y");
$hour = date("G");
$minute = date("i");
$file = 'image' . $day . '-' . $month . '-' . $year . '_' . $hour . '_' . $minute . '.gif';
echo "Hash: " . $hash . "<br />";
echo "Start: " . date("H:i:s") . "<br />";
$result = mysql_query("SELECT * FROM pictures WHERE hash = '$hash' LIMIT 1");
$num = mysql_num_rows($result);
if ($num == 0) {
mysql_query("INSERT INTO pictures (year, month, day, hour, minute, hash, file) VALUES ('$year', '$month', '$year', '$hour', '$minute', '$hash', '$file')");
$dest = imagecreatetruecolor(799, 599);
imagecopy($dest, $im, 0, 0, 10, 49, 799, 599);
$color = imagecolorexact($dest, 255, 255, 255);
imagecolortransparent($dest, $color);
imagegif($dest, './image.gif');
imagegif($dest, './images/' . $file);
imagedestroy($dest);
imagedestroy($im);
}
echo "End: " . date("H:i:s");
?>
<br /><img src="./image.gif" />
编辑: 现在我在 crontab 中添加了另一行,它使用 wget 下载图像并将其保存到特定文件夹中。图像下载没有问题。我还编辑了 php 文件以使用下载的图像,但问题并没有消失。不创建图像。