###前提・実現したいこと
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度目の処理で終了してしまった。
###該当のソースコード
//共通処理(うまく行ってそうなので割愛させていただきます) <?php require_once("common.php"); require_once("functions.php"); getkeyword(); //キーワードリストからリクエストしたいキーワードを取得 getApiData(); //APIにリクエスト DBwrite(); //DBに接続・書き込み updateKwlist(); //キーワードリストに処理完了フラグ・時刻など書き込み //共通の処理の最後にページ遷移させる方法を試した //試したこと1 header('location: page2.php'); exit(); //試したこと2 echo '<script type="text/javascript">location.href="page2.php";</script>';
###補足情報(言語/FW/ツール等のバージョンなど)
レンタルサーバー:lolipop ライトプラン
PHPバージョン:5.6
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/14 23:26
退会済みユーザー
2017/10/14 23:47