私は、データベースにレコードを保存してから4時間後にcronでPHPスクリプトを実行しようとしています。私の問題はここではcronではなく、ここではうまくいきます(デーモンcronから4時間ごとにテストメールを受け取っているので、これは間違いありません)。タイムスタンプunix時刻と時刻()の違いが間違っているのはなぜですか?
問題は、タイムスタンプとunixに変換された時刻と現在の時刻との差異を計算してから、いくつかのスクリプトを実行するときです。
しかし、これらの2つの時間の差は3時間以上あり、理由はわかりませんが、スクリプトは4時間ではなく7時間後に実行されます。誰も私を助けることができますか?
私のコードは次のようになります。
<?php
require_once('some-path/wp-load.php');
global $wpdb;
$constant= 4*3600;
$table = 'notifications';
$data = $wpdb->get_results("SELECT * FROM $table WHERE status = 'pending'");
$time = time();
foreach ($data as $r){
$temp_data = strtotime($r->date_created);
if ($time - $temp_data > $constant){
$email = $r->email;
$message = 'test';
$subject = 'test';
$headers = 'From: test <[email protected]>' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$mail_client = wp_mail($email, $subject, $message, $headers);
if($mail_client){
$wpdb->update($tabel, array('status' => 'sent'), array('id_raport'=>$r->id_raport), array('%s'), array('%d'));
}
}
}
日付の例データベースから今Using strtotime(): 1458814621, Directly from database "2016-03-24 10:17:01"
、私は本当のlocaltimeを取得するには、このような何かを行うことができます知っている:
date_default_timezone_set('Europe/Bucharest');
$date = date('m/d/Y h:i:s a', time());
$time = strtotime($date);
更新。 しかし、これはtime()メソッドと同じことを返します。今
データベースから返されるdate_createdのいくつかのバージョンを提供できますか? –
あなたのタイムゾーンはUTCから3時間ですか? –
@ LiamSorsby、私はあなたの質問に私の質問の最後に追加しました。それが役に立てば幸い。ありがとう。 – Ionut