質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1254閲覧

cronが動かしているPHPが途中で止まります

igaiga

総合スコア144

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/09 05:22

cronで動かしているphpが途中で止まってしまいます。
APIを読み込んで、sleepをはさみながら30分ほど動作するプログラムなので重たいのかとは思います。

出力を捨てないと途中で止まるという記事があったので下記のようにしていますが、それでも途中で止まります。
test.phpをブラウザで開けば最後まで動作するのでcronで動かした場合のみのように思うのですが、考えられる原因として何かれば、ご教示頂ければ幸いです。

###レンタルサーバの管理画面での設定

cron

1cd /home/www/recode; /usr/local/bin/php /home/www/recode/test.php > /dev/null 2>&1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/09 05:53

どこのレンタルサーバーかしりませんが。 設定有無にかかわらずある一定時間以上の処理は強制KILLされます
igaiga

2019/02/09 05:55

さくらインターネットです。強制KILLなんてのもあるんですね。。。
guest

回答2

0

ベストアンサー

「質問への追記・修正、ベストアンサー選択の依頼」で既に指摘がありますが、レンタルサーバでは負荷が高いプログラムがkillされることがあります。

【さくらレンタルサーバーでバッチをkillされたくなければ高負荷な時間を短くせよ。 - hsksnote】
http://d.hatena.ne.jp/hsksnote/20110804/1312470316

【さくらサーバーで500エラーが頻発・・・ | ゲージツ的生き方のススメ】
https://www.takahashiryusuke.com/さくらサーバーで500エラーが頻発・・・/

投稿2019/02/09 06:04

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igaiga

2019/02/09 06:36

参考サイトありがとうございます! メモリ使用量のオーバーは、何度もハマったので大丈夫だと思いたいです。 リソース情報を見ても1分以上動作しているプロセスはありません。 処理開始からkillされるまでの時間は最短で25秒と参考サイトの検証結果にありますが、長くても5秒程度でsleepが挟まるのですが、sleepの有り無しは関係ないでしょうか。 でも途中で終わるタイミングが毎回変わるということは負荷が高まったタイミングってことで間違いなさそうな気もしますね;;
kei344

2019/02/09 06:51

さくらサーバの中のことはわかりませんが、sleepしてもプロセスは残っているので継続した処理として止められると予想します。 sleepの部分でプログラムを分割してはいかがでしょう。(データは出力したりDBで共有)
igaiga

2019/02/09 07:16

foreachでくり返しfunctionを呼び出して、DBにデータを書き込む処理をしていていますけど、そういうことではないですか?
kei344

2019/02/09 07:42

違います。プロセス自体を分ける感じです。
igaiga

2019/02/09 09:43

承知いたしました。 やってみます。ありがとうございました。
guest

0

投稿2019/02/09 05:48

編集2019/02/09 06:02
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igaiga

2019/02/09 05:53

下記のようにphp.iniは下記のようにしています。 allow_url_fopen = On memory_limit = 256M max_execution_time = 3600 allow_url_include = On extension=imagick.so extension=php_openssl.dll max_input_vars = 2000 post_max_size = 110M upload_max_filesize = 100M
退会済みユーザー

退会済みユーザー

2019/02/09 06:03

やはり予想通りでしたね。
退会済みユーザー

退会済みユーザー

2019/02/09 06:21

3600=1時間じゃ
igaiga

2019/02/09 06:26

1時間はかからないので今までブラウザで開いて止まったことはありません。
退会済みユーザー

退会済みユーザー

2019/02/09 06:41 編集

あら、うっかり なんにせよ、ログみればKILLの原因がPHPなのかサーバーOSで切られているのかの区別はできるでしょうよ
igaiga

2019/02/09 07:02

エラーログ見たけど見当たりませんでした;;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問