ホームページ バックエンド開発 PHPチュートリアル PHP の非同期サブ使用によりユーザー エクスペリエンスが向上します

PHP の非同期サブ使用によりユーザー エクスペリエンスが向上します

Jun 13, 2016 pm 01:06 PM
count header php

PHP 非同期呼び出しによりユーザー エクスペリエンスが向上します

これは、テクノロジーに精通した私の友人によって書かれたもので、php 愛好家の読者や php の学習に興味のある友人が参照できるように、私のブログに公開するよう依頼されました。
?????? ? 例: PHP 言語
ある SNS コミュニティでは、ユーザーが友達にメールを送信します (友達の数は数百人)。送信されたことを示すプロンプトが表示されます。
一般的に使用される PHP 記述メソッド
sendmail.php

<?php
$count=count($emailarr);//$emailarr数组为好友的邮件地址
for($i=0;$i<$count;$i++)
{
  sendmail(.....);//发送邮件
}
echo ''发送完毕';
?>
ログイン後にコピー

?
今回は 100 通のメールが送信されたとします。この操作の結果はどうなりますか?
ユーザー エクスペリエンス: ユーザーは待機します -> 数十のメールを送信します -> システムがタイムアウトになり、エラー メッセージが返されます
この操作では大量のメールを送信する必要があります。 PHP の実行時間が長すぎるため、ユーザーは待ち焦がれています。 Apache または nginx が許容実行時間を超えて待機すると、タイムアウト エラーが返されます。現時点では、ユーザーには操作が成功したかどうか、また送信されたメールの数はわかりません。
このコードのユーザー エクスペリエンスは非常に悪く、タスクをスムーズに完了できないことがわかります。
どのように行うべきですか?
ここでは非同期実行という概念について説明します
ユーザー エクスペリエンス: ユーザーは待機します -> 送信が完了します
友達は、なぜ送信リンクがないのかと尋ねます。
ユーザーがリクエストを送信すると、メール送信タスクはレターの送信を個別に処理する PHP プログラムに転送されます。ユーザーに「送信完了」と表示された時点では、レターはまだ送信されていません。 、メール送信プログラムがバックグラウンドで懸命に動作し、文字を 1 つずつ送信しています
sendmail.php

<?php
$domain="www.***.com";
$url="/system_mail.php";
$par="email=".implode(',',$emailarr)."&........";
$header = "POST $url HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($par) . "\r\n\r\n";
$fp = @fsockopen ($domain, 80, $errno, $errstr, 30);
fputs ($fp, $header . $par);
fclose($fp);
echo ''发送完毕';
?>
system_mail.php
<?php
ini_set("ignore_user_abort",true);
ignore_user_abort(true);//此处的代码需要php.ini开启相关的选项,保证php执行不超时的,不明白,参考我的另一篇文章 “关闭浏览器后,php脚本会不会继续运行”
/*
获取email地址,发信,此处为发信代码
*/
?>
ログイン後にコピー

?わかりました。非同期モードに変更した後、ユーザーは情報を送信して、すぐに「送信完了」という結果を得ることができます。レターは送信されるまでバックグラウンドで 1 つずつ送信されます
この記事は php 愛好家からのものです http://www.phplover.cn/、元のアドレス: http://www.phplover.cn/post /phpyibugongzuotishengyonghutiyan .html

?

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles