勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで作成したプログラムをcron設定し自動実行する方法

   2024/05/22  PHP サーバー

cronの設定方法。サーバー側での設定とPHP側での書き方を以下にメモ。

 

PHP側(cron.php)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
$hoge = array(0 => 'aaa', 1 => 'bbb', 2 => 'ccc');
$body .= "<?\n \$array = " . var_export($hoge,true) . ";\n?>";
file_put_contents('/var/www/html/php/test.php', $body);
?>
<?php $hoge = array(0 => 'aaa', 1 => 'bbb', 2 => 'ccc'); $body .= "<?\n \$array = " . var_export($hoge,true) . ";\n?>"; file_put_contents('/var/www/html/php/test.php', $body); ?>
<?php
$hoge = array(0 => 'aaa', 1 => 'bbb', 2 => 'ccc');
$body .= "<?\n \$array = " . var_export($hoge,true) . ";\n?>";
file_put_contents('/var/www/html/php/test.php', $body);
?>

配列の内容をtest.phpというファイルに出力するというもの。尚、cronでパスを指定する場合は絶対パスにする

 

サーバー側の設定

サーバにSSH接続し以下コマンドでPHPのパスを調べる。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
which php
which php
which php

以下のようにパスが表示される筈なのでメモっておく。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/usr/bin/php
/usr/bin/php
/usr/bin/php

以下コマンドでcronが動いているか調べる。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/etc/rc.d/init.d/crond status
/etc/rc.d/init.d/crond status
/etc/rc.d/init.d/crond status

以下のように表示されればOK。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
crond (pid ***)を実行中...
crond (pid ***)を実行中...
crond (pid ***)を実行中...

以下でcronの設定ファイルを開く。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
vi /etc/crontab
vi /etc/crontab
vi /etc/crontab

以下を追記する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
分 時 日 月 曜日 実行ユーザー PHPパス 実行するPHPのパス
分 時 日 月 曜日 実行ユーザー PHPパス 実行するPHPのパス
分 時 日 月 曜日 実行ユーザー PHPパス 実行するPHPのパス

 

cronの記入例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
00 15 * * * root /usr/bin/php /var/www/html/php/cron.php
00 15 * * * root /usr/bin/php /var/www/html/php/cron.php
00 15 * * * root /usr/bin/php /var/www/html/php/cron.php

上記の場合だと毎日15時にcron.phpを実行する設定になる。

 

リファレンス

https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-cron-expressions.html

 - PHP サーバー

  関連記事

CentOSから他のOSに移行が必要な理由とCentOSの状況について

AlmaLinuxにLAMP等、諸々環境構築する記事を書いたがそもそも「どうして ...

Let's Encryptの自動更新時「Failed to renew certificate~」エラーの対応方法

CentOSからAlmaLinuxに移行後、初めてのLet's Encrypt更 ...

ブログサービスの様にサブドメインを動的に生成する方法  

ブログサービスの様に「hoge」というログインIDを作成した際「hoge.blo ...

WordPressのWP-Mail-SMTPプラグインが動かない

PHPのバージョンを下げてからWordPressで外部メールサーバが使えるWP- ...

OpenLiteSpeedにてhtaccessファイルでリライト、リダイレクトする方法

OpenLiteSpeedでリライト、リダイレクト設定を行いたい。調べたところ管 ...

S