コンテキスト: サーバーから画像をダウンロードし、白色を透明に設定し、画像をルート フォルダーに保存するスクリプトを作成しました。また、画像のコピーを別のフォルダ「images」に日付と時刻を名前に付けて保存します。
画像がいつ更新されるか正確にはわからないため、作成日とファイル名とともに画像のハッシュをデータベースに保持しています。
問題: スクリプトを 5 分ごとに自動的に実行したいので、サーバー (Ubuntu Server 12.04) に crontab を作成しました。Crontab は 5 分ごとにスクリプトを実行しますが、実際の画像を保存せずに新しいレコードをデータベースに追加するだけです。コンソールまたは Web ブラウザからスクリプトを手動で実行しようとすると、イメージが保存され、データベース レコードが更新されます。
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" />
編集: wgetでイメージをダウンロードして特定のフォルダーに保存する別の行をcrontabに追加しました。問題なく画像がダウンロードされます。ダウンロードした画像を使用するようにphpファイルも編集しましたが、問題は解決しません。イメージは作成されません。