アプリのユーザーが持っているすべての友達のために行ってアクションを実行するアプリを作成しようとしています。問題は、そのようなアプリを開発できるプラットフォームをまだ見つけていないことです。最初はPHPを使ってみて、herokuを使ってみたらコードが動きましたが、友達が多かったので30秒以上ループしてリクエストがタイムアウトして途中で止まってしまいました。どのプラットフォームを使用してもかまいません。ただ動作させたいだけです。Python、C++、PHP。それらはすべて私にとっては問題ありません。前もって感謝します。
1 に答える
set_time_limit function documentationで説明されているように、制限が設定されている場所に応じて、タイムアウト設定を変更できることから始めましょう。
スクリプトの実行を許可する秒数を設定します。これに達すると、スクリプトは致命的なエラーを返します。デフォルトの制限は 30 秒です。存在する場合は、php.ini で定義されている max_execution_time 値です。
ただし、サーバー自体に設定することもできます。
もう1つの問題は、ルート上のルーターにも独自のタイムアウト制限があるため、私の経験から最大60秒です.
何をしたいのかというと、問題はどの言語/テクノロジーを使用しているかではなく、facebook に対して多くの http リクエストを作成しているため、少し時間がかかるという事実であり、これがボトルネックになっていると思います。その場合は、php 以外のものを選択して改善できることはあまりありません (ただし、IO パフォーマンスを改善するNIOを使用することはできます)。
そうは言っても、php が常に最適なソリューションであるとは限らず、目の前のタスクによって異なります。
Java やその他のコンパイル済み言語は、スクリプト言語 (php、python) よりも優れたパフォーマンスを発揮するはずです。C++ を使用する場合は、すべてを上回るでしょうが、C++ でアプリをプログラミングすることに抵抗はありませんか?
最も「親しみやすい」と感じる言語/テクノロジーを選択します。選択できる選択肢がある場合は、アプリに必要なものを見つけてから、必要なものに対してどれがより優れたパフォーマンスを発揮するかを調べてください。
編集
前回、フレンドの最大数が 5000 に制限されていることを確認しました。
ユーザー フレンドごとにグラフ リクエストを実行する必要がある場合、タイムアウトに関係なく、ユーザーを長時間待たせずにそれを実行する方法はありません。
私が見ているように、あなたには2つのオプションがあります:
クライアントを非同期にします。Web ソケットやコメットを使用したり、x 秒ごとに ajax リクエストを発行して計算されたデータを取得したりできます。
そうすれば、タイムアウトについて心配する必要がなくなり、ユーザーはすぐにコンテンツの取得を開始できます。JavaScript API を使用してグラフ リクエストを作成します。これにより、タイムアウトを完全に回避でき、サーバーからの大量のネットワークを削減できます。
たとえば、データベースのデータに依存している場合など、計算にサーバーが必要な場合、このオプションは使用できない場合があります。
「Facebook SDK for C++ がない」という問題については、関係ないと思いますが、問題ではありません。
すべての facebook SDK は https 要求の単なるラッパーであるため、独自の SDK を実装することはそれほど難しくありませんが、C++ でそれを行うことを考えるのは嫌いですが、C++ で何かを行うことを考えるのも嫌いです。