
過去の質問や他サイトを参考にしても実行できなかったので、ここに質問させていただきます。
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で質問しましょう!
似たような質問が見つかりました
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript ifreamをリロードしたい 1 2022/05/03 16:15
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPからシェルコマンドの実行
-
PHPファイルをCron設定からのみ...
-
mysql複数レコードをまとめて削...
-
php実行中に実行中のphpファイ...
-
PHPからCRONの編集
-
社内LANで複数台のPCからApache...
-
FTPコマンドでディレクトリごと...
-
php.iniって。。
-
ファイル一覧表(LAN内の別PC)
-
フォントの色を変えるには?
-
「旭日中綬賞 」とはどんな賞で...
-
PHPのif文でその処理を途中で抜...
-
PHP postgres でロールバック...
-
phpのプログラムエラー
-
phpのswitch文のcaseで
-
mod_phpとcgi版phpはなにがどう...
-
mb_send_mail関数が利用出来ない
-
PDOとmysql_real_escape_str
-
require_once で読み込まれたか?
-
CakePHP2のCronでのShellを使う...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
シェルスクリプトをPHPで動かそ...
-
PHPでコマンドプロンプトを実行...
-
require_onceが動いていない
-
ヒアドキュメントの中で演算子...
-
PHPでサーバーにインストールさ...
-
php実行中に実行中のphpファイ...
-
社内LANで複数台のPCからApache...
-
ブラウザからexecコマンドを実...
-
PHPからバッチファイルの実行
-
Switch文における、returnとbre...
-
PHPからPostgreSQLのダンプを実行
-
正常に動作しない
-
htmlでsubmitで指定したAction...
-
PHPファイルをcronで実行す...
-
[cakePHP]外部ファイルの実行方法
-
テルネットしコマンドを自動実行
-
copy() で属性保存
-
PHP+MySQLでrollback出来ない
-
入力してからn時間(日)後、DBデ...
おすすめ情報