在開發 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