


Comment implémenter un véritable multi-threading PHP à l'aide de pthreads
Cet article présente principalement la méthode d'utilisation de pthreads pour obtenir un véritable multi-threading PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
PHP 5.3 ou supérieur. . Grâce à l'extension PHP pthreads, PHP peut véritablement prendre en charge le multi-threading. Le multithreading peut réduire considérablement le temps d'exécution du programme lors du traitement de tâches répétitives en boucle
J'ai dit dans mon article précédent que le goulot d'étranglement des performances de la plupart des sites Web ne réside pas sur le serveur PHP, car il peut simplement augmenter le serveur horizontalement. nombre de cœurs de processeur pour y faire face facilement (pour différents hôtes cloud, il est plus pratique d'augmenter le VPS ou le nombre de cœurs de processeur. Vous pouvez ajouter un VPS directement avec l'image de sauvegarde, sans même installer et configurer le système d'exploitation et l'environnement ). Au lieu de cela, il réside dans la base de données MySQL.
Si vous utilisez une base de données MySQL et une requête SQL conjointe, vous pourrez peut-être gérer la logique métier. Cependant, si vous rencontrez un grand nombre de requêtes simultanées, vous cesserez de travailler.
Si vous utilisez une base de données NoSQL, dix requêtes peuvent être nécessaires pour traiter la même logique métier, mais chaque requête est plus rapide que MySQL. Dix boucles de requêtes NoSQL peuvent être plus rapides qu'une requête conjointe MySQL. de requêtes/seconde ne posent aucun problème.
Si vous ajoutez le multi-threading PHP, interrogez NoSQL via dix threads en même temps et renvoyez la sortie récapitulative des résultats, la vitesse sera plus rapide. Dans notre produit APP actuel, nous appelons une interface PHP qui recommande des produits en temps réel en fonction des préférences de l'utilisateur. PHP doit lancer 500 à 1 000 requêtes dans la base de données BigSea NoSQL pour calculer les préférences personnalisées de l'utilisateur en temps réel. Le multithreading PHP est très évident.
Téléchargement de l'extension PHP : https://github.com/krakjoe/pthreads
Document du manuel PHP : http://php.net/manual/zh/book .pthreads.php
1. Compilation et installation étendues (Linux), le paramètre de compilation --enable-maintainer-zts est une option obligatoire :
cd /Data/tgz/php-5.5.1 ./configure --prefix=/Data/apps/php --with-config-file-path=/Data/apps/php/etc --with-mysql=/Data/apps/mysql --with-mysqli=/Data/apps/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir=/Data/apps/libs --with-jpeg-dir=/Data/apps/libs --with-png-dir=/Data/apps/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/Data/apps/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts make clean make make install unzip pthreads-master.zip cd pthreads-master /Data/apps/php/bin/phpize ./configure --with-php-config=/Data/apps/php/bin/php-config make make install
Ajouter dans php.ini :
vi /Data/apps/php/etc/php.ini extension = "pthreads.so"
Donne un multi-threading PHP et une boucle For pour capturer l'exemple de code PHP de la page de recherche Baidu :
<?php class test_thread_run extends Thread { public $url; public $data; public function __construct($url) { $this->url = $url; } public function run() { if(($url = $this->url)) { $this->data = model_http_curl_get($url); } } } function model_thread_result_get($urls_array) { foreach ($urls_array as $key => $value) { $thread_array[$key] = new test_thread_run($value["url"]); $thread_array[$key]->start(); } foreach ($thread_array as $thread_array_key => $thread_array_value) { while($thread_array[$thread_array_key]->isRunning()) { usleep(10); } if($thread_array[$thread_array_key]->join()) { $variable_data[$thread_array_key] = $thread_array[$thread_array_key]->data; } } return $variable_data; } function model_http_curl_get($url,$userAgent="") { $userAgent = $userAgent ? $userAgent : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 5); curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); $result = curl_exec($curl); curl_close($curl); return $result; } for ($i=0; $i < 100; $i++) { $urls_array[] = array("name" => "baidu", "url" => "http://www.baidu.com/s?wd=".mt_rand(10000,20000)); } $t = microtime(true); $result = model_thread_result_get($urls_array); $e = microtime(true); echo "多线程:".($e-$t)." "; $t = microtime(true); foreach ($urls_array as $key => $value) { $result_new[$key] = model_http_curl_get($value["url"]); } $e = microtime(true); echo "For循环:".($e-$t)." "; ?>
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Comment résoudre le problème des caractères tronqués lors de l'importation de fichiers csv en php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP ne prend pas en charge le multi-threading. La raison est la suivante : PHP ne prend pas en charge le multi-threading par défaut. Pour utiliser le multi-threading, vous devez installer l'extension pthread, vous devez utiliser l'option --enable-. paramètre mainteneur-zts pour recompiler PHP.

Comment utiliser le multithread PHP pour implémenter un serveur RPC hautes performances Avec le développement continu d'Internet, les systèmes distribués sont de plus en plus demandés. L'appel de procédure à distance (RPC) est l'un des mécanismes de communication souvent utilisés dans ces systèmes distribués. Il permet aux programmes sur différentes machines d'appeler des fonctions distantes tout comme l'appel de fonctions locales, réalisant ainsi la transmission de données et les appels de fonctions entre systèmes. Dans le développement actuel, afin d'améliorer les performances et les capacités de traitement simultané du système, la technologie multithread est utilisée pour

Comment améliorer les performances de lecture et d'écriture des bases de données grâce au multithreading PHP Avec le développement rapide d'Internet, les performances de lecture et d'écriture des bases de données sont devenues un problème clé. Lorsque notre application doit fréquemment lire et écrire dans la base de données, l'utilisation d'une approche monothread entraîne souvent des goulots d'étranglement en termes de performances. L'utilisation du multithreading peut améliorer l'efficacité de la lecture et de l'écriture de la base de données, améliorant ainsi les performances globales. En tant que langage de script côté serveur couramment utilisé, PHP possède une syntaxe flexible et de puissantes capacités d'exploitation de base de données. Cet article explique comment utiliser la technologie multithread PHP pour améliorer

Comment améliorer la vitesse de tri des données à grande échelle grâce au multithreading PHP Avec le développement rapide d'Internet et la popularité du Big Data, la demande de traitement de données massives augmente également. Parmi eux, pour le problème commun du tri des données, comment améliorer la vitesse de traitement est devenu un problème urgent à résoudre. Dans le domaine de PHP, la technologie multi-threading est considérée comme une solution efficace. Cet article explique comment améliorer la vitesse de tri des données à grande échelle via le multithreading PHP. 1. Le principe du multi-threading Le multithread fait référence à l'existence de plusieurs threads en même temps. Plusieurs threads peuvent exécuter différentes tâches en même temps.

Comment améliorer les performances des requêtes de base de données grâce au multithreading PHP Introduction : Avec le développement rapide d'Internet, les performances des requêtes de base de données sont devenues l'un des défis importants auxquels sont confrontés les développeurs. En tant que langage de script côté serveur largement utilisé, PHP joue également un rôle important dans les requêtes de bases de données. Cet article explorera comment améliorer les performances des requêtes de base de données grâce à la technologie multithread PHP pour répondre aux besoins de requêtes simultanées élevées. 1. Qu'est-ce que le multithreading ? Avant d'expliquer comment utiliser le multithreading pour améliorer les performances des requêtes de base de données, nous devons d'abord comprendre ce qu'est le multithreading. populaire

Pratique de programmation multithread PHP : utilisation de coroutines pour implémenter le traitement de tâches simultanées Avec le développement d'applications Internet, les exigences en matière de performances du serveur et de capacités de traitement simultané sont de plus en plus élevées. La programmation multithread traditionnelle n'est pas facile à implémenter en PHP, donc afin d'améliorer les capacités de traitement simultané de PHP, vous pouvez essayer d'utiliser des coroutines pour implémenter la programmation multithread. Coroutine est un modèle de traitement simultané léger qui peut implémenter l'exécution simultanée de plusieurs tâches dans un seul thread. Par rapport au multithreading traditionnel, les coûts de commutation de coroutine sont inférieurs

En programmation PHP, le multi-threading est une technique de programmation très importante si nous devons effectuer plusieurs tâches ou gérer plusieurs requêtes en même temps. Le multithreading peut permettre à plusieurs threads de s'exécuter en même temps, améliorant ainsi l'efficacité du programme et l'expérience utilisateur. 1. Introduction au multi-threading PHP Le multi-threading PHP fait référence à un programme qui exécute deux ou plusieurs threads en même temps. Chaque thread est un sous-processus indépendant et peut effectuer des tâches indépendamment. En PHP, le multithreading peut être géré via l'extension pcntl. L'extension pcntl est une extension de contrôle de processus supportée par PHP

Comment utiliser le multithreading PHP pour implémenter une file d'attente de messages à haute concurrence Introduction : Avec le développement rapide d'Internet et l'augmentation spectaculaire du trafic, le traitement à haute concurrence est devenu un problème qui ne peut être ignoré dans le développement de logiciels modernes. En tant que solution efficace, la file d'attente de messages est largement utilisée dans divers systèmes distribués à grande échelle. Cet article explique comment utiliser la technologie multithread PHP pour implémenter des files d'attente de messages à haute concurrence afin de répondre aux exigences de haute concurrence des systèmes à grande échelle. 1. Le concept et les scénarios d'application de la file d'attente de messages est une technologie de découplage basée sur le modèle de publication-abonnement.
