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

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

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

PHP

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

Q&A

解決済

9回答

2975閲覧

バッチ処理などでシェルスクリプトからPHPを呼び出すメリットは何ですか?

honya-san

総合スコア13

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

PHP

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

1グッド

2クリップ

投稿2019/02/12 06:02

プロダクトのソースコードを読んでいると、PHPで書かれたバッチ処理を
わざわざシェルスクリプトから呼び出して実行する仕組みをよく見かけますが、
何かメリットがあるんでしょうか。(後々、並列に処理させたいという意図?)

一般的なユースケースがあれば教えて欲しいです。

bash

1echo "start php"; 2php ./hogehoge.php
yut148👍を押しています

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

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

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

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

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

honya-san

2019/02/12 12:46 編集

皆さま、色々な用途でのユースケースのご紹介ありがとうございました。 個人的に一番しっくりきた回答をベストアナウンサーとさせて頂きました。
guest

回答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

tacsheaven

総合スコア13703

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

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

0

ベストアンサー

なぜ php スクリプトを直接起動するのではなく
シェルスクリプトに書いて起動しているのか?

ということなら m6uさんが書かれているように
動機が逆だと思いますねえ。

例えばデータベースに接続して、ちょっとした
情報の取得および編集とかは、関連コマンドや
整形ツールを使うより phpだけで済みますし。

あとは、シェルスクリプトにしておけば
可変情報を環境変数なり引数なりで渡すと
汎用的な使い勝手が期待できますよね。

投稿2019/02/12 06:36

takasima20

総合スコア7458

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

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

0

一般的なユースケースがあれば教えて欲しいです。

PHPのフレームワークで書かれたシステムに関連してバッチを走らせたい場合、phpを呼び出す形にすればそのままフレームワークを使うことが可能です。

投稿2019/02/12 06:09

maisumakun

総合スコア145183

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

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

0

質問にお書きのように、後々のためにというのもあるでしょう。

シェル経由でなく、PHPスクリプト単体で起動するためには、PHPスクリプト先頭にshbang行を書かないといけませんが、書くとウェブサーバーから呼び出すとshbang行が出力されてしまいます。
同じ処理を、バッチでもブラウザからでも起動するということであれば、シェルスクリプトにしてphp ファイル名と書く意味はあるかと思います。

crontab等からの起動であれば、シェルスクリプトを絡ませなくても、crondがシェルのコマンドラインを認識するので、直接php ファイル名と書けますが。

あるいは、ポータビリティの関係でshbang行にPHPのフルパスを書きたくないとか。

投稿2019/02/12 07:01

編集2019/02/12 08:46
otn

総合スコア84499

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

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

0

phpで処理すると楽だから。

投稿2019/02/19 02:52

t98907

総合スコア20

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

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

0

phpで処理すると楽だから。

投稿2019/02/19 02:50

t98907

総合スコア20

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

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

0

実際にやった例ですが、PHPで作られたメインのWebアプリ用データを、業務上の理由により手作業で大量にExcelからDBに投入する必要がありました。その際、全角半角変換などの変換処理をPHPと同じロジックで行いたかったので、PHPのスクリプトを組み、Excel VBAで

  1. Excelから内容をテキストファイルにする。
  2. PHPのスクリプトを起動し1のファイルを変換する。
  3. Excelで再取り込みする。
  4. DBに書き込む。

なんてことをやりました。実際、Excel VBAやVBScriptだと面倒な処理がPHPやPythonなどのスクリプト処理で簡単にできることもあるので、こういう感じで部分的に使うなんてことは場合によってはあるかと思います。

投稿2019/02/12 07:36

backyard

総合スコア534

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

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

0

どうしてもCLIモードで立ち上げなくてはいけないのではなければ
web経由でwgetなどクローラをつかうと環境を分けなくていいのでラクです

投稿2019/02/12 06:25

yambejp

総合スコア114769

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問