質問: ### 前提・実現したいこと PHPでAPIで取得したデータをデータベースにためていく機能を作っています。 キーワードリストがあり、各キーワード毎にAPIにリクエストしDBに書き込むイメージです。 一度に処理するには時間がかかり、タイムアウトしてしまいますので ページ遷移(またはリロード)することで各キーワード毎の処理をしたいと考えています。 レンタルサーバー上で動かしていますので、タイムアウト時間を延ばして1回の処理で終わらせるのは難しいと考えています。 ### 困っている点・教えていただきたいこと ブラウザ上で実行すると想定通りの動きをしますが、 CRONで実行するとページ遷移させることができず、1つ目のキーワードに対する処理で終わってしまいます。 おそらくcronで処理するにあたってヘッダー情報を送ってページ遷移させること自体が 間違っているのだろうと考えていますが、解決策にたどり着けませんでした。 なぜできないかとどうすればできるかを教えていただきたいです。 また、できれば今回行き詰っている方法にはこだわりませんので、 このような連続処理をしたい場合、どうやって実現することが一般的なのかも合わせてご教示いただければ幸いです。 ### 試したこと lolipopのcronを使って、 1. page1の処理の最後にheader('location: page2.php');exit(); でページ遷移させてみる 2. javascriptで location.href でページ遷移させてみる また、GoogleAppsScriptでトリガーを使ってUrlFetchApp.fetch(http://~~.php)を実行し上記の1と2のパターンを試してみた。 いずれもブラウザ上ではうまく動作しますが、 cronやGASのurlfetchを使った場合ではページ遷移させられず、1度目の処理で終了してしまった。 ### 該当のソースコード ``` //共通処理(うまく行ってそうなので割愛させていただきます) location.href="page2.php";'; ``` ### 補足情報(言語/FW/ツール等のバージョンなど) レンタルサーバー:lolipop ライトプラン PHPバージョン:5.6
回答: ブラウザで実行しないならページ遷移出来ないのではないでしょうか? Lollipopで出来るかは分かりませんが、 私ならSeleniumやfirefoxをサーバにinstallし、ブラウザで実際にアクセスする または、shellが実行できるならcurlでそのphpのurlに二回アクセスする ですかね。