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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

3379閲覧

【FuelPHP】非同期処理をしたい

Sfidante

総合スコア90

PHP

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

1クリップ

投稿2018/04/27 08:53

環境

FuelPHP: 1.7
PHP: 5.5

やりたいこと

下記のように、あるブラウザ上の操作で、
リクエストが送信された時に、foreachで重たい処理を行おうとしているのですが、
それをすると、画面上でのロード時間が長くなってしまうので、
重たい処理の部分だけ、バックグラウンドで処理をして、画面を切り替えたいと考えております。

PHP

1foreach($values as $value){ 2 // 重たい処理 3}

FuelPHPのtasksを利用すれば、バックグラウンドで動いてくれるのではないかと思い、
重たい処理をtasksで実行したのですが、
バックグラウンドで処理はしてくれませんでした。
参考

PHP

1foreach($values as $value){ 2 \Package::load('oil'); 3 $bf = \Fuel::$is_cli; 4 \Fuel::$is_cli = true; 5 $_SERVER['argc'] = 1; 6 Oil\Refine::run('tasks_file_name'); 7 \Fuel::$is_cli = $bf; 8}

どのような方法をとれば、バックグラウンドで処理してくれるのかわかる方がいらっしゃいましたら、
御教授のほど、よろしくお願いいたします!

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHPは同期的な言語なので、
基本的に非同期な処理は不可能です。

出ていく手段は2つあります。

まず最初のターミナルのコマンドは論外です。
終わった事がPHPから分かりません。
例えば飛んでった先のコマンドがファイルを作る、DB等に結果を書き込む前提で、PHPは無限ループ内でusleep等を叩きまくって結果を待つような事をして検知する形になるでしょう。

curl_multiも中々の茨の道ですが、こっちの方がまだマシでしょう。
終わったら終わった順に処理しながら待てますからね。


今回はPHPということなのでPHPで出来る事を紹介しましたが、

実際には「あるブラウザ上の操作」をAjax通信にしてしまって、
裏でぐるぐるさせながら暫くお待ち下さい画像かなんかを見せるのが常套手段です。

どうしても画面遷移を伴わないと駄目なんだ!というケース以外ではAjaxが優秀ですので代用出来ないか検討してみてください。

投稿2018/04/27 18:15

miyabi-sun

総合スコア21158

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

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

Sfidante

2018/05/01 01:42

ご回答ありがとうございます。 なるほどです。 PHPだけではできないのですね! curl_multiの利用ですと、今後のプロジェクト管理が面倒になりそうなので、 Ajax方式を取ろうと思います! ありがとうございました!
guest

0

そういうのはqueueなのでFuelPHP queueとかで検索すれば見つかります。
何年も前で止まってるけど。
そりゃLaravelなら標準でキューに対応してるからわざわざFuelPHPでやらないという当たり前の話。

投稿2018/04/27 09:22

kawax

総合スコア10377

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

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

Sfidante

2018/04/27 09:41

ご回答ありがとうございます。 FuelPHPですと、標準では提供されていないんですね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問