站內搜尋

Wednesday, May 21, 2025

[PHP] 如何利用 cURL 實現自動排程

在開發 PHP 專案時,有時會需要定時從某個 API 或網站抓取資料,例如每日更新匯率、天氣預報,或備份遠端資料。這類需求可以透過 PHP 的 cURL 函式來完成抓取動作,再搭配 Linux 的 cron 排程功能,就能達到「自動執行」的效果。

以下將介紹如何用 PHP 的 cURL 撰寫一支簡單的資料抓取程式,並教你如何設定排程,讓它自動定時執行。


範例程式碼:用 cURL 抓取資料的函式

<?php

/**
 * 透過 cURL 從指定 URL 獲取內容。
 *
 * @param string $url 要獲取內容的目標 URL。
 * @param int $timeout (可選) cURL 連線的超時時間,單位秒。預設為 30 秒。
 * @param bool $verifySsl (可選) 是否驗證 SSL 憑證。預設為 false (不驗證)。
 * @return string|false 成功時回傳 URL 內容字串,失敗時回傳 false。
 */
function fetchDataFromUrl(string $url, int $timeout = 30, bool $verifySsl = false)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);  // 不包含響應頭部
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // 將結果以字串回傳
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);  // 設定超時時間
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $verifySsl);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $verifySsl ? 2 : 0);
    $content = curl_exec($ch);
    if (curl_errno($ch)) {
        $content = false;
    }
    curl_close($ch);
    return $content;
}

?>

你可以利用上面的函式寫出batch.php,並利用 Linux 的 cron 定時執行 (或 windows 的 工作排程器),你就可以讓 PHP 自動定期執行任務,實現無人值守的自動化處理。

No comments:

Post a Comment