當前位置: 首頁> 最新文章列表> 結合cron 定時腳本,每天定時推送日落時間

結合cron 定時腳本,每天定時推送日落時間

M66 2025-06-02

怎麼結合cron 定時腳本,每天定時推送用PHP 的date_sunset 獲取的日落時間?

在開發一些基於時間的推送系統時,很多時候我們會用到定時任務來自動執行一些操作。比如,我們可以定時獲取某個地區的日落時間,並推送到指定的接口或用戶。本文將會通過PHP 的date_sunset函數結合cron定時任務來實現每天定時推送日落時間的功能。

1. 獲取日落時間

首先,我們需要使用PHP 的date_sunset函數來獲取日落時間。這個函數接受緯度、經度和時間戳等參數,並返回日落時間。

 <?php
// 設置時區
date_default_timezone_set('Asia/Shanghai');

// 定義經緯度
$latitude = 39.9042; // 北京的緯度
$longitude = 116.4074; // 北京的經度

// 獲取日落時間(以 Unix 時間戳返回)
$sunset = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);

// 將日落時間格式化成可讀的格式
$sunset_time = date("Y-m-d H:i:s", $sunset);
echo "今日日落時間: " . $sunset_time;
?>

2. 結合cron 定時任務

我們希望每天定時推送日落時間,因此需要使用cron定時任務來執行這段PHP 腳本。

2.1 編寫PHP 腳本

我們已經有了獲取日落時間的PHP 代碼,接下來需要把這個代碼寫入一個PHP 腳本,例如send_sunset_time.php 。可以在腳本中加入推送代碼,推送日落時間到指定的URL。

 <?php
// 設置時區
date_default_timezone_set('Asia/Shanghai');

// 定義經緯度
$latitude = 39.9042;
$longitude = 116.4074;

// 獲取日落時間
$sunset = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);
$sunset_time = date("Y-m-d H:i:s", $sunset);

// 推送日落時間到指定的 URL(假設是 API 接口)
$api_url = 'https://m66.net/api/send_sunset_time'; // 替換為你的實際 URL
$data = array(
    'sunset_time' => $sunset_time
);

// 使用 cURL 發送 POST 請求
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$response = curl_exec($ch);
curl_close($ch);

if ($response) {
    echo "日落時間已成功推送: " . $sunset_time;
} else {
    echo "推送失敗";
}
?>

2.2 設置cron 定時任務

cron是Linux 系統下的定時任務調度程序,我們可以通過編輯crontab來設置每天執行PHP 腳本。

  1. 打開crontab文件:

     crontab -e
    
  2. 添加一行來設置每天在指定時間執行腳本(例如,每天晚上6 點):

     0 18 * * * /usr/bin/php /path/to/your/script/send_sunset_time.php
    

    這行命令的意思是:每天的18:00 執行send_sunset_time.php腳本。

  3. 保存並退出crontab文件,定時任務就會生效。

3. 完整實現

通過上述步驟,我們已經實現了使用PHP 獲取日落時間,並通過cron定時任務推送這個時間到指定的URL。

每次執行時,系統會自動獲取當前日期的日落時間並推送到URL(在上面的代碼中,URL 已經替換為m66.net )。這就可以幫助我們定時推送當天的日落時間到相關係統。

總結

通過PHP 的date_sunset函數,我們可以方便地獲取日落時間,結合cron定時任務,我們就能夠在每天固定的時間推送這個信息。這種方法可以廣泛應用於基於時間的推送系統,如天氣預報、日出日落提醒等。