ホームページ  >  に質問  >  本文

非同期リクエスト - PHP で JS と同様の非同期投稿を行う方法はありますか? fsockopen にはリクエスト結果を取得する方法がありません

メールを一括送信する場合、送信結果を取得する必要があるため、リクエスト結果を待つ必要があります。

phpでインターフェースを非同期にリクエストしてデータを取得し、コールバック関数を実行する方法はありますか?

現在は同期リクエスト インターフェイスなので待機しますが、非常に時間がかかります。 。また、実行中にサーバーの CPU が増加します。 。

教えてください

ここでの重要な点は、リクエストの戻りを待たず、戻りがあるときに特定のコードを直接呼び出すことです。リクエストは非常に遅いからです。 。 Redis キューはすでに使用されており、スクリプトが実行中です

过去多啦不再A梦过去多啦不再A梦2679日前719

全員に返信(5)返信します

  • 高洛峰

    高洛峰2017-05-27 17:44:08

    php はマルチスレッド拡張機能をインストールします。自分で拡張することで実現でき、jsもシングルスレッドで実装されます。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-27 17:44:08

    これらのライブラリを使用して、非同期タスクを実行してみることができますreactphp,workerman,swoole

    返事
    0
  • 怪我咯

    怪我咯2017-05-27 17:44:08

    これはphpに付属するcurl_multiで実現できます

    返事
    0
  • ringa_lee

    ringa_lee2017-05-27 17:44:08

    fsockopen を使用する場合、これは非同期に送信されるだけで、返されません。もちろん、swoole を使用することもできますが、これには C が含まれています。 language 、一部のエラー メッセージは C からのものです。 C を知っている場合は、これも使用できます。 Workerman を使い始めるのは非常に簡単です。具体的な実装ロジックは次のとおりです。
    非同期にする必要がある場合は、Workerman を直接呼び出してロジックを実行します。
    Workerman がロジックを実行した後、タスク タスクを非同期で呼び出します。ワーカーマンの非同期。労働者は直接戻ります。
    タスクが完了すると、タスクはワーカーマンに渡され、ワー​​カーマンが非同期ロジックを実行します。
    PHP 非同期通信を備えたバックアップ フレームワークを提供します
    github-php-awesome を翻訳しました

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-05-27 17:44:08

    キュー

    1. 送信する必要がある情報を Redis またはその他のメモリ キャッシュに保存します。

    2.php は、キー トークンへのアクセスを必要とするインターフェイスを提供します。このインターフェイスは、redis にキャッシュされた電子メール データをループして送信します。

    3. Windows と Linux の両方でスケジュールされたタスクを使用するための解決策があります。定期的に http にアクセスしてこの php インターフェイスをリクエストし、送信を完了します。非同期と同等です。

    返事
    0
  • キャンセル返事