ホームページ >データベース >mysql チュートリアル >データベースを安全かつ効率的にメンテナンスするために、MySQL クエリの実行を cron ジョブとして自動化するにはどうすればよいですか?

データベースを安全かつ効率的にメンテナンスするために、MySQL クエリの実行を cron ジョブとして自動化するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-22 09:19:11773ブラウズ

How can I automate MySQL query execution as cron jobs for secure and efficient database maintenance?

MySQL クエリを Cron ジョブとして実行: 安全で自動化されたアプローチ

スケジュールされたタスクは、データベースの保守に不可欠な場合があります。このようなタスクの 1 つは、MySQL データベースから古いエントリを削除することです。ただし、毎晩手動でクエリを実行し、毎回パスワードを入力する必要があるのは面倒な場合があります。この記事では、MySQL クエリの実行を cron ジョブとして自動化するための、よりシンプルで安全な方法について詳しく説明します。

MySQL イベント スケジューラの使用 (推奨方法)

推奨されるアプローチは、 MySQL の組み込みイベント スケジューラにより、外部スクリプトが不要になります。これを有効にするには:

SET GLOBAL event_scheduler = ON;

次に、スケジュールに基づいて目的のクエリを実行するイベントを作成します:

CREATE EVENT name_of_event
ON SCHEDULE EVERY 1 DAY
STARTS '2014-01-18 00:00:00'
DO
DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7;

Cron を使用した PHP ファイルの実行 (代替方法)

イベント スケジューラがオプションでない場合は、cron で PHP を実行することもできます。 ファイル。この方法では、必要な認証情報が埋め込まれた PHP スクリプトが必要です。不正なアクセスからスクリプトを保護してください。以下に例を示します:

<?php

$servername = "localhost";
$username = "root";
$password = "mypassword";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// Execute query
$sql = "DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7";
$conn->query($sql);

// Close connection
$conn->close();

?>

最後に、PHP スクリプトをタスクとして実行するように cron を設定します。 cron がスクリプトを実行できるように、適切な権限を忘れずに設定してください。

以上がデータベースを安全かつ効率的にメンテナンスするために、MySQL クエリの実行を cron ジョブとして自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。