
過去の質問や他サイトを参考にしても実行できなかったので、ここに質問させていただきます。
cakePHPを用いてa.ctpからb.ctpにredirectする処理の裏で別の処理を実行させるという、いわゆる非同期処理を試しています。
具体的に言うと、DBを更新する処理を書いたhoge.phpを外部ファイル実行しているものです。
その外部ファイル実行時のコマンドで悩んでいます。
「exec("php C:/hoge/hoge.php > /dev/null 2>&1")」 や
「popen('start /B cmd /c "C:/pleiades/xampp/php.exe C:/hoge/hoge.php > /dev/null 2>&1"',"r")」
などいくつか試してみたのですが実行されていません。
DB更新処理自体は、hoge.phpを単体で動かして動作確認が取れたので問題無しと考えます。
質問としては、
・execないしpopenのコマンドの書き方はこれでいいのか。
・そもそも外部ファイル(hoge.php)は上記のように自由な場所に置いていいのか。
となります。
どうかご教授ください。
よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> hoge.phpを単体で動かして動作確認が取れたので問題無しと考えます
本当に問題無いのでしょうか?
私はwindows上でPHPを動かしたことが無いので分かりませんが・・
Linuxではコマンドを実行するのにユーザーの権限が必要になります。コマンドラインで実行するユーザーとapacheのユーザーは大抵の場合別なので、コマンドラインで実行できた=execが通るなど断言できません。というよりもむしろ動かないほうが多いです。
windows上だとどうなるのか知りませんが、少なくてもexecコマンドで呼び出すPHPの中でログをはき出すなど動作確認すべきでは?
また、
> DBを更新する処理を書いたhoge.phpを外部ファイル実行
cakePHPでもDBは更新できますが、なぜわざわざフレームワーク外にあるPHPで更新させる必要があるのでしょう?
>・execないしpopenのコマンドの書き方はこれでいいのか。
popenは使ったことが無いので分かりませんが、execコマンドに関してはcakeだろうが素のPHPだろうが同じです。フレームワークに依存しない処理なので関係ありません。
>・そもそも外部ファイル(hoge.php)は上記のように自由な場所に置いていいのか。
Windowsは知りませんがLinuxであれば「自由な場所」にPHPを置くことは出来ません。
アクセス権限があるディレクトリ以下に配置するのがセオリーでしょう。
また、cakeの中に置くのであれば/vendorsか/app/vendorsに置くのがセオリーです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトをPHPで動かそ...
-
拡張子php画像をjpg画像等に変...
-
ファイル名は、数字の「0」(...
-
さくらサーバーにて、phpからメ...
-
onedrive にexcelファイルをア...
-
fsockopenなどについて
-
CFileDialogの最初のディレクト...
-
iframeからのアクセスか、ブラ...
-
CSVファイルのダウンロード
-
【PHP】Googleアドセンスが出力...
-
rmdirでフォルダが消せません
-
MAMPのユーザー名とパスワード
-
phpのセッションについて
-
バッチファイルで特定ファイル...
-
eclipseでコメントアウトができ...
-
youtubeに音声のみのmp4ファイ...
-
PHPで、エラーがない場合のみ画...
-
携帯サイト絵文字入りのPHPフォ...
-
VB.NET、ASPでメールの自動返信...
-
crontabでPHPスクリプトが実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
if文が入れ子の場合の条件の解釈
-
PHPをPostgreSQLに接続するには?
-
httpdのプロセスが自動で消えな...
-
PHPでサーバーにインストールさ...
-
スクリプトを実行すると警告が...
-
Prompt入力値をphp変数として取...
-
プログラム単語のsetageとかのa...
-
PHPから環境変数'PATH'が使えない
-
Maximum execution time of 30 ...
-
あるphpから他のPHPプロ...
-
JSのWINOW.CONFI...
-
PHPからバッチファイルの実行
-
perl -e "print 'A';"
-
PHPからシェルスクリプトを実行
-
PHPからCRONの編集
-
PHPでコマンドプロンプトを実行...
-
ヒアドキュメントの中で演算子...
-
【PHP】命令は記述順に処理...
-
mod_phpで、rootしか実行できな...
おすすめ情報