問題タブ [persistent-connection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP MySQL アプリで永続接続と非永続接続を一緒に使用する
私のアプリには永続的な接続が必要な部分があります。特に、1 時間ごとにおそらく 30,000 の選択要求が多くの異なるユーザーによって行われる部分があります。これにより、私の mysql サーバーが 100 の接続制限で限界に達し、私は本当にそうしません。接続数が 100 を超えると、これ以上増やしたくありません。そのため、読み取りと選択が必要なアプリケーションの部分については、永続的な接続に切り替えたいと考えています。
データが変更されている他の部分は、通常、トランザクションを通じて行われます。一般的なルールは、php ドキュメントによると、トランザクションに永続的な接続を使用しないことです。したがって、これを非永続的な接続で維持したいと思います。
私の質問は、同じアプリ、同じスクリプトなどで、永続的な接続と非永続的な接続を一緒に使用できますか?
PHP 5.2 以降、MySQL 5 以降 (InnoDB テーブル)、および Zend Framework 10.6 以降を使用しています。
mobile - 永続的な TCP 接続、長いタイムアウト、および IP ホッピング モバイル デバイス
HTTP 経由で長いポーリング スキームを使用するアプリがあります (ただし、この質問は TCP ベースのプロトコルに適用される可能性があります)。タイムアウトはかなり長く、30 分程度です。
モバイル デバイスが IP から IP へとかなり頻繁に (1 分おきに) ホップすることが時々見られます。これにより、数十の長期間有効なソケットがサーバーに蓄積されます。これが必要以上の負荷を引き起こしていると思わざるを得ません。
そのため、一部の IP ゲートウェイは、デバイスがホップオフしたときに接続を閉じるのに優れていると推測しています。これに対処するために私が考えることができる戦略は次のとおりです。
- タイムアウトを減らす (デバイスのバッテリー寿命を延ばす)
- ユーザーの再接続時に、最後にアクティブだった接続を閉じる (Cookie またはユーザー ID の追跡が必要)
他のもの?
image - 大量の画像に最適な配信方法
各ユーザーが最大数百の連絡先を持つことができるオンライン チャット アプリケーションを中心とした Web サイトを持っています。各連絡先には、独自のプロファイル画像があります。連絡先のプロフィール画像が名前の横に読み込まれるようにしたい。ただし、ユーザーがサイトをロードするたびに 100 枚以上の画像をダウンロードするのは負荷がかかるようです (調査によると、ユーザーの 40% がキャッシュを利用していないことが示されています)。各画像のサイズは約 60x60 ピクセルです。
Google で検索したり、Facebook にサインオンしたりすると、数十の画像がほぼ瞬時に表示されます。高速サーバーと良好な接続だけでなく、非常に多くの画像をユーザーに配信するための最適な方法は何ですか?
私が思いついた可能なアプローチは次のとおりです。
- 各ユーザーのプロフィール画像をデータベースに保存し、php ファイルに 1 つの画像を作成してから、ユーザーにそれをダウンロードしてから、css を使用して各プロフィール画像を表示します。ただし、これはサーバー上で非常に負荷がかかるようであり、このような大きなファイルを何度も参照すると、ユーザーのブラウザーに負担がかかる可能性があります。
- Apache ではなく nginx を使用して画像をサーバーに保存します (nginx は通常、このような静的コンテンツをサーバーに送信するのに適しています)。ただし、これはソリューション自体というよりも、ソリューションの最適化のように見えます。
また、永続的な http 接続を介してデータを配信できるため、サーバーに対して複数のファイルに対して複数の要求を行う必要がないことも認識しています。ただし、1 つの永続的な接続で配信できるファイルの正確な数。この永続的なモデルは、画像を個別のファイルとしてロードするだけで、必ずしも悪い考えではないということでしょうか?
関連する問題に関する個人的な経験に関する提案、解決策、および/またはメモは大歓迎です。ここではスケーラビリティと、クロスブラウザーのサポート (IE7+、Opera、Firefox、Chrome、Safari) が非常に重要です。
編集:私はJQUERYを使用していません。
php - AJAX 呼び出し間で FTP 接続 PHP リソースを永続化する
AJAX 経由で FTP サーバーと対話できるマルチユーザー PHP Web アプリケーションがあります。このアプリケーションにより、ユーザーは FTP サイトを閲覧できます。Javascript は、特定のディレクトリ内のファイルとディレクトリのリストを返すサーバー スクリプトと通信する AJAX 呼び出しを行います。
これはうまくいきます。ただし、ディレクトリ リストが要求されるたびに、サーバーは FTP サーバーとの接続を再確立する必要があり、これには多くの時間がかかります。
AJAX 呼び出し全体で FTP 接続 PHP リソースを永続化する必要があります。言い換えると、接続は開いたままにしておく必要があり、新しい AJAX 呼び出しごとに (もちろん接続がタイムアウトするまで)、接続を再確立したり再認証したりすることなく、そのリソースを使用して ftp_nlist() を実行できる必要があります。 .
誰でもこれを行う方法を考えることができますか?
php - PHPと持続的接続
DBへの永続的な接続を開くたびに、DBデーモンがクラッシュしてから再起動すると、デーモンへの新しい接続の30%でパイプ切断エラーが発生します。
これは持続的接続ハンドルを変更することで修正できますが、手動で行う必要があります。ハンドルを変更せずに壊れたパイプエラーを修正できる解決策はありますか?
php - 永続的なphp接続?
特定の時点でphpスクリプトを一時停止して、ajax応答を待ってから実行を続けることは可能ですか?
そうでない場合、スクリプトが再度呼び出されるまで、スクリプトの現在の状態 (すべての定義済み変数など) を保存する最も適切な方法は何ですか?
mysql - mysql 永続接続のタイムアウトを変更する方法
永続的な接続のタイムアウトはどこで定義されていますか? それを変更することは可能ですか?
ios - Apple プッシュ通知なしで Azure アプリケーションから MonoTouch (iPhone) アプリケーションにメッセージをプッシュする
現在、Windows Azure でサーバー コンポーネントを実行する iOS 用のアプリケーション (MonoTouch を使用) を設計しています。アプリケーションは基本的に、ユーザーがクライアント内でメッセージを生成し、サーバーに送信するチャット タイプのアプリケーションです。サーバーは、ユーザーがメッセージを送信している可能性のある他のクライアントに (実行可能な限り迅速に) それらのメッセージを転送する必要があります。に。
私の質問は、クライアントがサーバーから「プッシュ」メッセージを受信する必要がある、このようなアプリケーションを設計するための推奨される方法はありますか?
いくつかのオプションを検討しましたが、フィードバックをいただければ幸いです。
最初のオプションは、Apple のプッシュ通知サービス (APNs) を使用することです。これには 2 つの懸念があります。1 つ目は、クライアントがオンラインのときにのみメッセージを受信する必要があることです (APN は、アプリが閉じているときにもメッセージを送信しますが、これは必要ありません)。第二に、大量のメッセージが送られる可能性があるが、Apple はおそらく (完全に公平に) 不満を抱くだろう。
私が検討した 2 番目のオプションは、Web サービス (WCF ベース) を使用し、クライアントがこのサービスを (たとえば) 2 ~ 3 秒ごとに呼び出すようにすることです。これは、許容できる最大遅延です。ただし、これには潜在的に不必要なネットワーク トラフィックが大量に発生するように思われます (「何かありますか?」、「いいえ」、吐き気を繰り返す)。
3 番目のオプションは、クライアントとサーバー間の永続的な Web サービス接続を維持することです。クライアント アプリが起動すると、バックグラウンド スレッドで Web サービス メソッドが呼び出されます。サーバーは (何も返さないことで) 接続を開いたままにし、メッセージが届いた場合はすぐに返します。この接続は、たとえば 2 分後にタイムアウトになる可能性があり、その時点で再確立されます。これは私が望むことをしているように見えますが、繰り返しますが、サーバーに対して多くの接続がいつでも開いているのではないかと心配しています。これにより、サーバー リソースが不必要に必要になる可能性があります。
4 番目のオプションは、TCP (または UDP ですが、私が見つけた限りでは、Windows Azure はこれをサポートしていません) を介した永続的な接続を使用することです。これは良いオプションのように思えますが、サーバーの使用量に関してはやり過ぎかもしれません.
5 番目のオプションは、クライアントにミニ Web サーバーなどを実行させるなどして、何らかの方法でサーバーからクライアントにメッセージを直接プッシュすることです。ただし、アプリは 3G および WiFi ネットワークで実行されるため (私の制御を超えて)、受信ポートがこの種のことのために開かれるとは思いません。
誰かが他の提案を持っている場合、または上記のオプションのいずれかが良い考えであると考えている場合 (または、この種の問題に取り組む標準的な方法である場合)、私はそれについて聞くことに非常に興味があります.
前もって感謝します、
ジョン
web-services - Web サービスのテストにおける永続的または非永続的な接続
私はウェブサービスを持っています。この Web サービスからの応答を取得するテスト アプリケーションを作成しています。Web サービス アプリケーションへのサービス参照を追加しました。
テスト アプリケーションのロジックは以下のとおりです。
このアプローチで永続的な接続を行っているのか、非永続的な接続を行っているのかを知りたかっただけです。何か助けはありますか?