Scriptスマートフォン専用ページを表示Script秘密です。見つけたら出会いを大切にしたいです。内緒にね!広告この広告は30日以上更新がないブログに表示されております。新規記事の投稿を行うことで、非表示にすることが可能です。>>2017年09月22日エックスサーバーで30秒以上のCronを上手に運用する3つのコツエックサーバーはcronが利用できます。cronはWindowsでいうatコマンドやスケジューラーみたいな機能です。お好みのプログラムを10分毎に処理を実行させたり、毎日決まった時間に実行させることができます。レンタルサーバーで探すことで対応しているレンタルサーバーが見つかります。登録できるスケジュールの数、動いたスケジュールの稼働時間など何かしらのリミットがもうけられています。エックサーバーの場合は、CPUを100%使って良い時間に制限があります。1回の実行で許容されるCPUフルの時間が30秒を超えると、そのプログラムが強制終了されます。exceededというメッセージとともに強制終了されます。sleepやusleepで実行率を下げればいける!?と思いましたが、完了するまでの時間を伸ばすだけで、実処理のCPU時間の上限は変わりません。考えると当たり前ですね・・そのためほぼ同じ位置で処理が止まります。CPUをぶん回し、30秒以内に完了するプログラムは、そのままなんの工夫もしないでいけます。30秒をちょっとでも超えるプログラムは、強制的にプロセスが終了してしまうので対策が必要です。エックスサーバーで30秒以上のCronを上手に運用する3つのコツこれからご紹介するのは、エックスサーバーに限らず、PHPをcron実行させ、時間制限のあるサーバーでCronを使うためのコツとして使えます。同じ処理を何度もcron実行させ、目的の処理を完了させるように変更します。ループ処理の実行時間を計測するmicrotime()で経過時間を測定します。これは、強制終了で中途半端な位置で終了を防ぐ目的です。以下のようなループ回数が多いパターンなどで使えます。ループ回数が多いと強制終了される}このように実行から28秒経過した時点でループ処理を抜けることが可能になります。タイムアウト用処理}完了処理();これで許容されるCPUフルの時間前に処理を停止することが可能になります。処理結果を記録するコツ1で実行時間を判断することが可能になりました。このままでは毎回先頭から始まってしまうので、何度やっても同じところで止まってしまいます。これを回避するにはやった処理を記録し、スキップさせます。タイムアウト用処理}完了処理();実行した処理を処理済み配列$進捗に格納していきます。ファイルに保存して、次回実行時に読み込まれるので、複数回呼ばれても同じ処理を実行することがなくなります。スキップさせたい単位の処理済み配列は、この例では、キーワード単位にしています。粒度はご自身の処理に合わせて変更することが可能です。throwを使ってシンプルにするコツ1、コツ2で大抵対応できます。throwを使うと処理をシンプルに書くことが可能です。時間を計測して、タイムアウトを検出したら、次の処理に進まずに処理を終了させたいですよね。この際、throwを使います。Exception("タイムアウト処理1");}メイン処理の中から個別に呼び出した処理でそれぞれタイムアウトを検出するようにしています。通常、処理1が終了すると続けて、2、3、と流れていきます。Exception("")で例外を発生させると次の処理に進まずに、メイン処理のcatch部に流れてきます。これにより、メイン処理の構造を変えずに、シンプルに処理を中断させることができます。PHPのバージョン指定を忘れずにエックスサーバーは複数のバージョンのPHPを利用することができる環境になっています。PHPのバージョンの違いによって思わぬ副作用があったりするので、必ずバージョンを指定して利用しましょうPHP7系は以下のパスにあります。cronの設定はsshからできるよエックスサーバーのコンソール(ブラウザ)からスケジュールを指定できます。これ以外に、sshログインした後、以下コマンドでスケジュールを編集することができます。-eviの使い方や、cronの書き方がわからない場合は、ググると詳しいサイトが見つかります。先頭に#をつけるとコメントアウトできます。何か異常があったら先頭に#をつけて停止しておきましょう。以下コマンドでスケジュールの一覧を確認することができます。-lまとめここまで、エックスサーバーで30秒以上のCronを上手に運用する3つのコツをご紹介してきました。この記事にたどり着いた方はコアな方に違いない!って思ってます。最新記事(01/22)「パンくずリスト」の問題が新たに検出されました。無料ブログカテゴリアーカイブさくら(1)node.js(2)javascript(2)効率化(3)shell(3)php(5)レンタルサーバー(8)お名前COM(2)ロリポップ(2)ワードプレス(11)エックスサーバー(5)無料ブログ(2)月別アーカイブ2020年01月(1)2019年06月(1)2019年05月(1)2018年06月(1)2018年02月(3)2018年01月(1)2017年11月(1)2017年10月(3)2017年09月(1)2017年08月(2)2017年07月(5)2017年06月(2)2017年04月(1)2016年11月(1)2016年09月(1)2016年08月(1)2016年07月(3)2016年05月(1)2016年03月(6)2016年02月(1)×この広告は30日以上新しい記事の更新がないブログに表示されております。