検索
ホームページバックエンド開発PHPチュートリアルAPPの即時配信機能をphpで実装する方法

APPの即時配信機能をphpで実装する方法

Jan 02, 2018 pm 01:29 PM
php関数成し遂げる

PHPでAPPの即時配信機能を実装するにはどうすればよいですか?多くのソーシャル ソフトウェアでは、ユーザーが健康診断を受けられるようにするためにクイック リリース メカニズムが使用されています。今日は、これらのソーシャル ソフトウェアで一般的に使用されているいくつかのヒントについても説明します。お役に立てれば幸いです。

前書き

私たちが普段 WeChat モーメントに投稿するとき、N 枚の写真がテキストとともに送信され、手抜きもなくあっという間に送信されることを想像してみてください。その体験はとてもクールに感じられます。

しかし、立ち止まって技術的に考えてみましょう。これは可能でしょうか?一部の 2G ネットワークでは、せいぜい数十キロバイトの速度しかありません。私たちの写真は、圧縮されていても数百キロバイトのサイズですが、どうすればメッセージを瞬時に送信できるのでしょうか。

今考えると、少し奇妙ではありませんか~

実際、多くのソーシャル ソフトウェア (Weibo、WeChat) は、一種のインスタント メッセージング メカニズムを使用しています。実際に送信してから送信に成功したことを通知するのではなく、送信に成功したことを直接通知し、その後バックグラウンドで送信した内容をこっそりアップロードするという現象がよく発生します。ネットワーク速度が良くないため、新しく送信されたモーメントは最初は正常でしたが、数分後に送信に失敗したというメッセージが表示されました。これはとても恥ずかしいことです。最初は何も言わなかったのに、最も重要な瞬間に、もう無理だと言いました。

先進的なテクノロジーに怯えないでください。小さなトリックです。本当に基本的なものですが、非常に実用的でもあります。

テクノロジーについて議論する前に、最初にいくつかの初期条件を述べます。

1. データベース テーブルの構造にいくつかの特別な変更が加えられました。友達のサークルのコンテンツ テーブルには特別なフィールド ステータスがあり、値は 1 または 2 です。値 1 は次のことを意味します。友達の輪は公開されていません。 値 2 は、友達のサークルが公開されていることを意味します。 (理由がわからない人は、とりあえず読み進めてください。後で説明します)

2. この記事のインスタント投稿機能は、写真がある場合に使用することを指します。写真がある場合、写真のアップロードが遅すぎるため、2 番目の送信メカニズムを使用する必要がありますが、写真がなくプレーンテキストの場合は、テキスト送信量が非常に少ないため、その必要はありません。通常の手順で送信できます。


3. この記事のコードは PhalApi フレームワークに基づいており、構文は比較的単純です。ORM 操作の経験がある学生であれば理解できるはずです


4. この記事では主に APP の即時配信機能について説明します。 WEB 側 この機能は特に必要ありません。現代のネットワークでは、PC が一度にたくさんの写真 (10M/s、20M/s) を送信できるので十分です


実行プロセス全体について一般的に説明します。

クライアントは公開 API を呼び出し、サーバーはコンテンツ (

publish.php) を公開します。このアップロード API () では、クライアントは追加のアップロード API (upload.php) を呼び出す必要があります。 Upload.php)、作業が完了すると、クライアントはリリースが成功したことを直接伝えます (実際には、アップロードはまだ完了しておらず、その背後にアップロードを必死に支援するプロセスがあります)。次に、クライアントは送信したテキストと写真を一時的に結合して表示し (現在、表示できるのはあなただけであり、友達サークルの他のユーザーは表示できません)、アップロード API の結果を待ちます ( upload.php) / もちろん、アップロードはタイムアウトする可能性があります (通常は 1 分以内に結果が表示されます)。成功した場合はスムーズにアップロードされ、失敗した場合は送信失敗が報告されます。結果を待ってから 1 分以内に、アップロードが失敗しない限り、送信したと思わせます。後で通知されます。

それでは、このメカニズムを技術レベルで分析してみましょう:

右上隅の送信ボタンをクリックすると、2 つのプロセスが同時に開始され、そのうちの 1 つはアップロードを支援します。別のプロセスでは、送信した写真を秘密裏にアップロードします (

upload.php)。具体的なコードは次のとおりです:

rreee 謎がわかりますか?データベースに入力された status

フィールドに基づいて 1 (未公開) と 2 (公開) の 2 つの状況があり、データ (

list.php) を読み取るときはどうすればよいでしょうか。 その後、表示ページは次のようになります:

Lists.php

<?php
 
//正常获取数据(文本,图片,位置信息等)
 
…
 
Code …
 
Code …
 
//进行判断,如果有图片则为未发布(status为1),无图片则为立即发布(status为2)
 
//如果有图片则通过返回标识符告诉客户端,让他赶紧去调用真实的上传逻辑upload.php,我们这只把最基本的文本上传好,再设置多一个status而已~
 
$status = ($pic_num > 0) ? 1 : 2;
 
//拼接入库数据
 
$where_data = array( "status"=> $status)
 
//数据入库
 
DI()->notorm-> friends ->insert($where_data);
 
?>

ここでの
where

条件は、インスタント配信メカニズムの最も重要な部分です:

status

は1より大きい(公開済み) または 1 (未公開) に等しい、(

ヒント: ステータス画像がある場合のデフォルト値は 1) ですが、現在のユーザーが公開したコンテンツは読み取れるという非常に素晴らしい現象があります。どうだろうと関係なく、私たちは自分自身が投稿したモーメントをいつでも読むことができますが、他の人は読むことができない場合があります (写真がある場合は、別のプロセスを呼び出して写真をアップロードし、そのプロセスでステータスを 2 に変更する必要があるため)

那么还有最后一个关键点,就是负责上传图片的那个进程(upload.php),这个是真实上传图片的逻辑,

有几张图片,这么upload.php就会被调用几次

每次上传成功后将图片行的字段status改成2

upload.php

<?php
 
//Code..
 
//把图片上传到服务器目录
 
//获取长传结果标识,更改状态
 
If(上传成功){
 
//将status改回2
 
$status_data = array("status" => 2);
 
DI()->notorm->pic->select(&#39;u_id&#39;)->where(&#39;u_id, $u_id)-->update($status_data);
 
}else{
 
Code…
 
}

经过以上的几个操作(首先是publish.php,如果有图片上传的话则调用upload.php,展示的时候是list.php)。

不知道大家看出门道没有,和我们平常写的发布功能不同的是,上传upload.php功能被独立出来了,改装后的发布publish.php会用最快的速度将你的文本内容存进数据库,并且如果有图片内容的话,他会单独调用上传API upload.php

最关键的是在显示的时候做了一些小技巧,让自己保证可以看到自己发的东西。

相关推荐:

laravel编写APP接口(API)

PHP之Reflection API详解

phalapi之如何实现数据库读写分离

以上がAPPの即時配信機能をphpで実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。Apr 17, 2025 am 12:22 AM

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Mac版

SublimeText3 Mac版

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター