自作ジョブ実行時のajaxの戻り値が戻らず

2020年2月10日 at 17:43

Expressを利用して登録した情報をxml出力するジョブをテスト環境にて作成しました。
※ DOMDocumentでechoして出力しています。returnで("完了しました")
→ ジョブ生成の参考:https://concrete5-japan.org/help/5-7/developer/jobs/creating-a-job/


ジョブをインストールし、管理画面の自動実行ジョブからいざ実行をクリックすると、
xmlファイルそのものは、即出力されているのは確認でき、内容も問題ありませんでした。

しかし、画面上のグレーの点滅が本来なら終了するとグリーンになるはずですが、
点滅が止まりません。

点滅している状態で、リロードすると前回実行と前回結果がきちんと表示され、
DB内のジョブのログも実行ボタンを押したあとに登録・更新されているのも確認しました。


調べてみたところ、ボタンを押した際のajaxの戻りが返ってきていないため、
success時の処理に進まず、点滅が止まらないようです。

コアのjob.phpがその戻り値を生成してreturnするところのようなのですが、
どこに問題があるか現状手詰まりです。


最終的にはcronを使って出力するので、
点滅は関係はないのですが、できれば解決しておきたいと思います。

他に何か足りない部分があるのか、
調べるべき点などご教授いただければ幸いです。

よろしくお願いいたします。

concrete5:8.5.2
php:7.3
xserver
キャッシュはOFF設定。

タグ:

Re: 自作ジョブ実行時のajaxの戻り値が戻らず

2020年2月11日 at 6:41
実際にコードや処理量を見てみないと何も言えないのですが、
CLI (SSH) から実行してみるといいかもしれません。

$ cd [c5 がインストールされたパス]
$ concrete/bin/concrete5 c5:job [ジョブハンドル]

これでコマンドラインから実行し結果を見ることが出来ます。
ジョブハンドルは、ジョブのファイル名から .php の拡張子を除いたものです。

コマンドラインで正常に実行でき、終了できれば、ブラウザからの処理時間が足りないかもしれません。その時は Queueable Job に変更しないといけないかもです。

Queueable Job とは、大きすぎるとジョブを小分けにして実行するものです。

実は何かエラーが発生していれば、ジョブの実行結果から見ることが出来るかもしれません。
デバッグ設定でメッセージが出力されるようにすることを忘れずに。

よろしくおねがいします。
 

Re: 自作ジョブ実行時のajaxの戻り値が戻らず

2020年2月12日 at 9:31
ご返信ありがとうございます。

ジョブの確認方法やキューを利用する場面など、
理解できました、ありがとうございます。

よーく考えてみたところ、確定ではないのですが、
おそらく原因が特定できました、たぶん、私の凡ミスです(^^;)


今回ジョブを設定したのはテストサーバのテストサイトなので、
ajaxで利用するURLが外からアクセスできないために、
返り値が返却できていない、というだけの話のような気がします。

なので、実際に本番で実装したときに実行してみて、
それで万が一問題がある場合には、コマンドラインでの確認や
キューを利用した実装を検討します。


どうしても、見える範囲で考えてしまって、
詰まったら視野を広げる意識を持たないとダメですね・・・。

でも、勉強になりました、ありがとうございます。