プロダクトのソースコードを読んでいると、PHPで書かれたバッチ処理を
わざわざシェルスクリプトから呼び出して実行する仕組みをよく見かけますが、
何かメリットがあるんでしょうか。(後々、並列に処理させたいという意図?)
一般的なユースケースがあれば教えて欲しいです。
例
bash
1echo "start php"; 2php ./hogehoge.php
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答9件
0
シェルスクリプトだけではできない処理を、
phpを使って拡張したりruby使って拡張したりperl使って拡張したりpython使って拡張したり
自分の得意な言語でできるのが最大のメリットですよね。
ありがちなのは、crontabから定期実行する処理を呼び出すとか。
毎日深夜2時にデータベースのダンプファイルを出力するとか、
毎週月曜日0時に一時ファイルを消し込んだりとか。
そういうのを不慣れなシェルスクリプトで雑に組むよりも、
慣れている言語で書いたら安心だしデバッグもしやすいでしょう。
投稿2019/02/12 06:16
編集2019/02/12 06:20退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
フレームワークによってはバッチ処理用の機能を持っていることもあります。
(CakePHP の Shell/Command など)
フレームワークの持つ ORM をそのまま利用したり、フレームワーク上の自作メソッドを呼び出したりすることができるので、Web システムのバックエンドとしてのバッチ処理であれば、そういうことを利用した方が開発もメンテナンスも楽になるメリットがあります。
投稿2019/02/12 06:38
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
なぜ php スクリプトを直接起動するのではなく
シェルスクリプトに書いて起動しているのか?
ということなら m6uさんが書かれているように
動機が逆だと思いますねえ。
例えばデータベースに接続して、ちょっとした
情報の取得および編集とかは、関連コマンドや
整形ツールを使うより phpだけで済みますし。
あとは、シェルスクリプトにしておけば
可変情報を環境変数なり引数なりで渡すと
汎用的な使い勝手が期待できますよね。
投稿2019/02/12 06:36
総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
一般的なユースケースがあれば教えて欲しいです。
PHPのフレームワークで書かれたシステムに関連してバッチを走らせたい場合、php
を呼び出す形にすればそのままフレームワークを使うことが可能です。
投稿2019/02/12 06:09
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
質問にお書きのように、後々のためにというのもあるでしょう。
シェル経由でなく、PHPスクリプト単体で起動するためには、PHPスクリプト先頭にshbang行を書かないといけませんが、書くとウェブサーバーから呼び出すとshbang行が出力されてしまいます。
同じ処理を、バッチでもブラウザからでも起動するということであれば、シェルスクリプトにしてphp ファイル名
と書く意味はあるかと思います。
crontab等からの起動であれば、シェルスクリプトを絡ませなくても、crondがシェルのコマンドラインを認識するので、直接php ファイル名
と書けますが。
あるいは、ポータビリティの関係でshbang行にPHPのフルパスを書きたくないとか。
投稿2019/02/12 07:01
編集2019/02/12 08:46総合スコア84499
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
実際にやった例ですが、PHPで作られたメインのWebアプリ用データを、業務上の理由により手作業で大量にExcelからDBに投入する必要がありました。その際、全角半角変換などの変換処理をPHPと同じロジックで行いたかったので、PHPのスクリプトを組み、Excel VBAで
- Excelから内容をテキストファイルにする。
- PHPのスクリプトを起動し1のファイルを変換する。
- Excelで再取り込みする。
- DBに書き込む。
なんてことをやりました。実際、Excel VBAやVBScriptだと面倒な処理がPHPやPythonなどのスクリプト処理で簡単にできることもあるので、こういう感じで部分的に使うなんてことは場合によってはあるかと思います。
投稿2019/02/12 07:36
総合スコア534
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。