分享PHP-pcntl 实现多进程代码
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。
下面我们来看个实例
代码
<?php $arChildId = array(); for($i = 0; $i < 10; $i++) { $iPid = pcntl_fork(); if($iPid == -1) { die('can\'t be forked.'); } if($iPid) { # 主进程逻辑 $arChildId[] = $iPid; } else { # 子进程逻辑 $iPid = posix_getpid(); # 获取子进程的ID $iSeconds = rand(5, 30); echo '* Process '. $iPid. ' was created, and Executed, and Sleep '. $iSeconds. PHP_EOL; excuteProcess($iPid, $iSeconds); exit(); } } while(count($arChildId) > 0) { foreach($arChildId as $iKey=> $iPid) { $res = pcntl_waitpid($iPid, $status, WNOHANG); if($res == -1 || $res > 0) { unset($arChildId[$iKey]); echo '* Sub process: '. $iPid. ' exited with '. $status. PHP_EOL; } } } # 子进程执行的逻辑 function excuteProcess($iPid, $iSeconds) { file_put_contents('./log/'.$iPid.'.log', $iPid.PHP_EOL, FILE_APPEND); sleep($iSeconds); } ?>
Salin selepas log masuk
运行结果
* Process 16163 was created, and Executed, and Sleep 11 * Process 16164 was created, and Executed, and Sleep 21 * Process 16165 was created, and Executed, and Sleep 24 * Process 16166 was created, and Executed, and Sleep 27 * Process 16167 was created, and Executed, and Sleep 8 * Process 16168 was created, and Executed, and Sleep 14 * Process 16169 was created, and Executed, and Sleep 14 * Process 16170 was created, and Executed, and Sleep 26 * Process 16171 was created, and Executed, and Sleep 20 * Process 16172 was created, and Executed, and Sleep 21 * Sub process: 16167 exited with 0 * Sub process: 16163 exited with 0 * Sub process: 16169 exited with 0 * Sub process: 16168 exited with 0 * Sub process: 16171 exited with 0 * Sub process: 16164 exited with 0 * Sub process: 16172 exited with 0 * Sub process: 16165 exited with 0 * Sub process: 16170 exited with 0 * Sub process: 16166 exited with 0
Salin selepas log masuk
更多分享PHP-pcntl 实现多进程代码相关文章请关注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
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Penyelesaian Riddle Seashell
3 minggu yang lalu
By DDD
Apa yang Baru di Windows 11 KB5054979 & Cara Memperbaiki Masalah Kemas Kini
2 minggu yang lalu
By DDD
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas
Tutorial CakePHP
1382
52

