Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Erweiterung Multithreading

PHP-Erweiterung Multithreading

墨辰丷
Freigeben: 2023-03-25 21:38:02
Original
2551 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich PHP-Multithreading vor. Ich hoffe, dass er für alle hilfreich ist.

PHP 5.3 und höher kann mithilfe der PHP-Erweiterung pthreads dafür sorgen, dass PHP Multithreading wirklich unterstützt.
Mehrere Threads können die Programmausführungszeit bei der Verarbeitung sich wiederholender zyklischer Aufgaben erheblich verkürzen.
PHP-Erweiterung herunterladen: https://github.com/krakjoe/pthreads
PHP-Handbuchdokument: http://php.net/manual/zh/book.pthreads.php
1. Kompilierung der Erweiterung (Linux), Parameter bearbeiten – „enable-maintainer-zts“ ist eine erforderliche Option:

'./configure'
'--prefix=/usr/local/webserver/php'
'--with-config-file-path=/usr/local/webserver/php/etc'
'--with-apxs2=/usr/local/webserver/httpd/bin/apxs'
'--with-libxml-dir=/usr/local/webserver/libxml2'
'--with-mysql=/usr/local/webserver/mysql'
'--with-mysqli=/usr/local/webserver/mysql/bin/mysql_config'
'--enable-soap' '--enable-sockets' '--with-curl' --enable-maintainer-ztsmake clean
make
make install
unzip pthreads-master.zip
cd pthreads-master
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
Nach dem Login kopieren
makemake install
Nach dem Login kopieren
vi /usr/local/webserver/php/etc/php.ini
Nach dem Login kopieren

Hinzufügen

extension = "pthreads.so"
Nach dem Login kopieren

2. Geben Sie eine PHP-Multithreading- und For-Schleife an, um die Baidu-Suchseite PHP zu erfassen Codebeispiel:

<?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);
        }
    }
}
Nach dem Login kopieren
<?php
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 : &#39;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)&#39;;    $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)."\n";    
    $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)."\n";
?>
Nach dem Login kopieren

Verwandte Empfehlungen:

H5+WebWorkers Multi-Thread-Entwicklung und Verwendung, detaillierte Erklärung

PHP-Multi-Thread-Simulation um Flash-Verkäufe zu erzielen. Schnappen Sie sich Bestellungen

PHP implementiert Multiprozess und Multithreading

Das obige ist der detaillierte Inhalt vonPHP-Erweiterung Multithreading. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage