Rumah pembangunan bahagian belakang tutorial php PHP实现非阻塞以及多线程编程

PHP实现非阻塞以及多线程编程

Jul 20, 2018 pm 05:09 PM
pelaksanaan php

PHP多线程编程的实现以及非阻塞的实现。php默认并不支持多线程,要使用多线程需要安装 pthread 扩展,在安装好后,就可以进行多线程编程。

线程概念

线程是操作系统能够进行调度的最小单位

一个多线程程序比单线程程序被操作系统调度的概率更大,所以多线程程序一般会比单线程程序更高效;

多线程程序的多个线程可以在多核 CPU 的多个核心同时运行,可以将完全发挥机器多核的优势;

线程的创建和切换的系统开销都比进程要小,所以一定程度上会比多进程更高效;

线程天生的共享内存空间,线程间的通信更简单,避免了进程IPC引入新的复杂度。

什么时候该使用线程

I/O 阻塞会使操作系统发生任务调度,阻塞当前任务,所以代码中 I/O 多的情况下,使用多线程时可以将代码并行

多线程能充分利用 CPU,所以有多处大计算量代码时,也可以使用多线程使他们并行执行

用线程的好与坏

PHP 实现的线程安全主要是使用 TSRM 机制对 全局变量和静态变量进行了隔离,将全局变量和静态变量 给每个线程都复制了一份,各线程使用的都是主线程的一个备份,从而避免了变量冲突,也就不会出现线程安全问题。

子线程一旦开始运行,主线程便无法再对子线程运行细节进行调整

扩展安装

PHP 默认并不支持多线程,要使用多线程需要安装 pthread 扩展,而要安装 pthread 扩展,必须使用 --enable-maintainer-zts 参数重新编译 PHP,这个参数是指定编译 PHP 时使用线程安全方式。

./configure --enable-maintainer-zts --with-tsrm-pthreads
Salin selepas log masuk

实例

class Request extends Thread {    public $url;    public $response;    public function __construct($url) {        $this->url = $url;
    }    public function run() {        $this->response = file_get_contents($this->url);
    }
}
$chG = new Request("www.google.com");
$chB = new Request("www.baidu.com");
$chG ->start();
$chB ->start();
$chG->join();
$chB->join();
$gl = $chG->response;
$bd = $chB->response;
Salin selepas log masuk

PHP非阻塞

使用 fastcgi_finish_request()

echo "program start...";
fastcgi_finish_request();
sleep(1);echo 'debug1...';
sleep(10);echo 'debug2...';
Salin selepas log masuk

使用 fsockopen()
stream_set_blocking()

使用 cURL
$cmh = curl_multi_init();

使用 Gearman/Swoole 扩展

使用缓存和队列
redis

调用系统命令
$cmd = 'nohup php ./processd.php $someVar >/dev/null &';

使用 pcntl_fork()

PHP 原生支持
yield

相关推荐:

php安装threads多线程扩展,phpthreads多线程

Atas ialah kandungan terperinci PHP实现非阻塞以及多线程编程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengawal masa tamat tempoh cache dalam PHP? Bagaimana untuk mengawal masa tamat tempoh cache dalam PHP? Jun 19, 2023 pm 11:23 PM

Dengan populariti aplikasi Internet, kelajuan tindak balas laman web semakin menjadi tumpuan pengguna. Untuk bertindak balas dengan cepat kepada permintaan pengguna, tapak web sering menggunakan teknologi caching untuk menyimpan data cache, dengan itu mengurangkan bilangan pertanyaan pangkalan data. Walau bagaimanapun, masa tamat tempoh cache mempunyai kesan penting pada kelajuan tindak balas. Artikel ini akan membincangkan kaedah mengawal masa tamat tempoh cache untuk membantu pembangun PHP menggunakan teknologi caching dengan lebih baik. 1. Apakah masa tamat tempoh cache? Masa tamat cache merujuk kepada masa apabila data dalam cache dianggap tamat tempoh. Ia menentukan bila data dalam cache diperlukan

Cara menggunakan PHP untuk melaksanakan penukaran fail dan fungsi penukaran format Cara menggunakan PHP untuk melaksanakan penukaran fail dan fungsi penukaran format Sep 05, 2023 pm 03:40 PM

Cara menggunakan PHP untuk melaksanakan penukaran fail dan fungsi penukaran format 1. Pengenalan Dalam proses membangunkan aplikasi web, kita selalunya perlu melaksanakan penukaran fail dan fungsi penukaran format. Sama ada anda menukar fail imej kepada format lain atau menukar fail teks daripada satu pengekodan kepada yang lain, operasi ini adalah keperluan biasa. Artikel ini akan menerangkan cara melaksanakan fungsi ini menggunakan PHP, dengan contoh kod. 2. Penukaran fail 2.1 Tukar fail imej kepada format lain Dalam PHP, kita boleh gunakan

Prinsip pelaksanaan algoritma cincang yang konsisten untuk cache data PHP Prinsip pelaksanaan algoritma cincang yang konsisten untuk cache data PHP Aug 10, 2023 am 11:10 AM

Prinsip Pelaksanaan Algoritma Hash Konsisten untuk Cache Data PHP Algoritma Hashing Konsisten (ConsistentHashing) ialah algoritma yang biasa digunakan untuk cache data dalam sistem teragih, yang boleh meminimumkan bilangan migrasi data apabila sistem berkembang dan mengecut. Dalam PHP, melaksanakan algoritma pencincangan yang konsisten boleh meningkatkan kecekapan dan kebolehpercayaan caching data Artikel ini akan memperkenalkan prinsip algoritma pencincangan yang konsisten dan memberikan contoh kod. Prinsip asas algoritma pencincangan yang konsisten Algoritma pencincangan tradisional menyebarkan data ke nod yang berbeza, tetapi apabila nod

Perlindungan privasi pengguna sistem pengundian dalam talian dilaksanakan dalam PHP Perlindungan privasi pengguna sistem pengundian dalam talian dilaksanakan dalam PHP Aug 09, 2023 am 10:29 AM

Perlindungan privasi pengguna sistem pengundian dalam talian yang dilaksanakan dalam PHP Dengan pembangunan dan popularisasi Internet, semakin banyak aktiviti pengundian telah mula dipindahkan ke platform dalam talian. Kemudahan sistem pengundian dalam talian membawa banyak faedah kepada pengguna, tetapi ia juga menimbulkan kebimbangan mengenai kebocoran privasi pengguna. Perlindungan privasi telah menjadi aspek penting dalam reka bentuk sistem pengundian dalam talian. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis sistem pengundian dalam talian, dan menumpukan pada isu perlindungan privasi pengguna. Apabila mereka bentuk dan membangunkan sistem pengundian dalam talian, prinsip berikut perlu dipatuhi untuk memastikan

Cara menggunakan PHP untuk melaksanakan fungsi pendaftaran pengguna Cara menggunakan PHP untuk melaksanakan fungsi pendaftaran pengguna Sep 25, 2023 pm 06:13 PM

Cara menggunakan PHP untuk melaksanakan fungsi pendaftaran pengguna Dalam aplikasi rangkaian moden, fungsi pendaftaran pengguna adalah keperluan yang sangat biasa. Melalui fungsi pendaftaran, pengguna boleh membuat akaun mereka sendiri dan menggunakan fungsi yang sepadan. Artikel ini akan melaksanakan fungsi pendaftaran pengguna melalui bahasa pengaturcaraan PHP dan memberikan contoh kod terperinci. Pertama, kita perlu mencipta borang HTML untuk menerima maklumat pendaftaran pengguna. Dalam borang, kita perlu memasukkan beberapa medan input, seperti nama pengguna, kata laluan, e-mel, dll. Medan borang boleh disesuaikan mengikut keperluan sebenar.

Cara menggunakan PHP untuk melaksanakan penyesuaian mudah alih dan reka bentuk responsif Cara menggunakan PHP untuk melaksanakan penyesuaian mudah alih dan reka bentuk responsif Sep 05, 2023 pm 01:04 PM

Cara menggunakan PHP untuk melaksanakan penyesuaian mudah alih dan reka bentuk responsif Penyesuaian mudah alih dan reka bentuk responsif ialah amalan penting dalam pembangunan tapak web moden. Ia boleh memastikan kesan paparan tapak web yang baik pada peranti yang berbeza. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk melaksanakan penyesuaian mudah alih dan reka bentuk responsif, dengan contoh kod. 1. Fahami konsep penyesuaian mudah alih dan reka bentuk responsif Penyesuaian mudah alih merujuk kepada menyediakan gaya dan reka letak yang berbeza untuk peranti berbeza berdasarkan ciri dan saiz peranti yang berbeza. Reka bentuk responsif merujuk kepada penggunaan

Bagaimana untuk melaksanakan log masuk cap jari untuk program mini WeChat dalam PHP Bagaimana untuk melaksanakan log masuk cap jari untuk program mini WeChat dalam PHP May 31, 2023 pm 10:40 PM

Dengan pembangunan berterusan program mini WeChat, semakin ramai pengguna mula memilih program mini WeChat untuk log masuk. Untuk meningkatkan pengalaman log masuk pengguna, program mini WeChat mula menyokong log masuk cap jari. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk melaksanakan log masuk cap jari untuk program mini WeChat. 1. Fahami log masuk cap jari program mini WeChat Berdasarkan program mini WeChat, pembangun boleh menggunakan fungsi pengecaman cap jari WeChat untuk membolehkan pengguna log masuk ke program mini WeChat melalui cap jari, dengan itu meningkatkan keselamatan dan kemudahan pengalaman log masuk. 2. Kerja-kerja penyediaan dilaksanakan menggunakan PHP

Pelaksanaan PHP teknik carta alir operasi applet WeChat Pelaksanaan PHP teknik carta alir operasi applet WeChat May 31, 2023 pm 07:51 PM

Dengan perkembangan pesat Internet mudah alih, program mini WeChat menjadi semakin popular di kalangan pengguna, dan PHP, sebagai bahasa pengaturcaraan yang berkuasa, juga memainkan peranan penting dalam proses pembangunan program mini. Artikel ini akan memperkenalkan teknik melaksanakan carta alir operasi applet WeChat dalam PHP. Dapatkan access_token Dalam proses pembangunan menggunakan applet WeChat, anda perlu mendapatkan access_token terlebih dahulu, yang merupakan kelayakan penting untuk merealisasikan operasi applet WeChat. Kod untuk mendapatkan access_token dalam PHP adalah seperti berikut: f

See all articles