1. ホーム
  2. php

[解決済み] PHPを使ってcrontabのジョブを作成、編集、削除する?

2022-08-23 12:57:36

質問

PHPを使ってcrontabのジョブを作成、編集、削除することは可能でしょうか?

Apacheユーザの現在のcrontabジョブをリストアップする方法を知っています。

$output = shell_exec('crontab -l');
echo $output;

しかし、PHPでcronジョブを追加するにはどうしたらよいのでしょうか?'crontab -e' はテキストエディタを開くだけなので、ファイルを保存する前に手動でエントリを編集する必要があります。

PHPでcronジョブを削除する方法は?これもまた、'crontab -e'によって手動で行う必要があります。

このようなジョブ文字列で。

$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';

PHPでcrontabのジョブリストに追加するにはどうしたらいいですか?

どのように解決するのですか?

crontabコマンドの使い方

usage:  crontab [-u user] file
        crontab [-u user] [ -e | -l | -r ]
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)

だから

$output = shell_exec('crontab -l');
file_put_contents('/tmp/crontab.txt', $output.'* * * * * NEW_CRON'.PHP_EOL);
echo exec('crontab /tmp/crontab.txt');

上記は 作成と編集・追加 の両方で使用することができます。ただし、ユーザが適切なファイル書き込み権限を持っている場合に限ります。

ジョブを削除するには。

echo exec('crontab -r');

また、apache は特定のユーザとして動作しており、それは通常 root ではないので、cron ジョブは指定されない限り apache ユーザのためにのみ変更可能であることに注意してください。 crontab -u の権限を与えられない限り、apache ユーザーのためにのみ変更できることを意味します。