Heim >Backend-Entwicklung >PHP-Tutorial >Problem mit der asynchronen PHP-Videoverarbeitung? Bitten Sie Gott um Führung

Problem mit der asynchronen PHP-Videoverarbeitung? Bitten Sie Gott um Führung

WBOY
WBOYOriginal
2016-08-04 09:20:29951Durchsuche

Beschreibung der Anforderungen:
Verwenden Sie die Videolösung der Baidu Cloud Platform. Die Lösung besteht darin, das Mobiltelefon zuerst auf seinen eigenen Server hochzuladen und es dann vom eigenen Server auf den Server von Baidu hochzuladen Der PHP-Hintergrund vervollständigt den Benutzer. Wenn Sie auf Ihren eigenen Server hochladen, melden Sie dem Benutzer, dass der Upload erfolgreich war, und führen Sie dann den Upload auf den Baidu-Server durch. Das Problem, auf das wir jetzt stoßen, besteht darin, dass das PHP-Backend darauf wartet, dass alle Ausführungen abgeschlossen sind, bevor es zum Client zurückkehrt. Da muss man jedes Mal lange warten.

Ich frage mich, ob einer der Meister mir eine Anleitung geben kann? Als Frontend-Entwickler bin ich ein Anfänger in PHP und bin auf viele Probleme gestoßen. Vielen Dank an alle.

Antwortinhalt:

Beschreibung der Anforderungen:
Verwenden Sie die Videolösung der Baidu Cloud Platform. Die Lösung besteht darin, das Mobiltelefon zuerst auf seinen eigenen Server hochzuladen und es dann vom eigenen Server auf den Server von Baidu hochzuladen Der PHP-Hintergrund vervollständigt den Benutzer. Wenn Sie auf Ihren eigenen Server hochladen, melden Sie dem Benutzer, dass der Upload erfolgreich war, und führen Sie dann den Upload auf den Baidu-Server durch. Das jetzt aufgetretene Problem ist: Das PHP-Backend wartet, bis alle Ausführungen abgeschlossen sind, bevor es zum Client zurückkehrt. Da muss man jedes Mal lange warten.

Ich frage mich, ob mir einer der Meister eine Anleitung geben kann? Als Frontend-Entwickler bin ich ein Anfänger in PHP und bin auf viele Probleme gestoßen. Vielen Dank an alle.

Wenn Ihr PHP-Dienst PHP-FPM verwendet, können Sie einen Prozesspool speziell für die Verarbeitung von Video-Upload-Vorgängen öffnen. Das Skript verwendet fastcgi_finish_request, um schnell auf die Anfrage des Benutzers zu reagieren und eine zeitaufwändige Upload-Verarbeitung durchzuführen.

<code><?php
echo '手机端视频先上传至自有服务器';
sleep(10);
echo '上传成功';
fastcgi_finish_request(); //响应用户,结束请求
echo '程序继续操作,从自有服务器上传至百度服务器';
sleep(10);</code>

PHP-FPM wird während des Datei-Upload-Vorgangs nicht blockiert, da Nginx diese nur einmal nach Erhalt des hochgeladenen Inhalts an PHP-FPM übergibt.
Der Vorgang „Hochladen vom eigenen Server auf den Baidu-Server“ erfolgt Das Blockieren belegt einen PHP-FPM-Arbeitsprozess
Zu diesem Zeitpunkt können Sie erwägen, einen Upload-Prozesspool einzurichten, um diesen Vorgang abzuwickeln, um das Blockieren anderer Skripte im System zu vermeiden

<code>nginx.conf: upload.php脚本的处理都交给监听9001的PHP-FPM进程池处理
location = /upload.php {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9001;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

php-fpm: 正常的脚本由静态www池处理,网络阻塞脚本由动态upload池处理
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4</code>

Sie können eine Warteschlange verwenden. Nachdem der Benutzer den Upload abgeschlossen hat, stellt er eine Aufgabe direkt in die Warteschlange und kehrt dann zurück, um den Upload abzuschließen. Das System führt dann eine geplante Aufgabe aus, um die Warteschlange auszuführen. Es gibt verschiedene Formen der Warteschlangenanwendung. Sie können nach

suchen

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn