|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2006-09-12 18:39 UTC] tony2001@php.net
[2006-09-12 18:49 UTC] fiw at mail dot ru
[2006-09-12 19:03 UTC] fiw at mail dot ru
[2006-09-12 19:08 UTC] tony2001@php.net
[2006-09-12 19:16 UTC] fiw at mail dot ru
[2006-09-12 19:18 UTC] tony2001@php.net
[2006-09-12 19:31 UTC] fiw at mail dot ru
[2006-09-12 19:38 UTC] tony2001@php.net
[2006-09-12 19:55 UTC] fiw at mail dot ru
[2006-09-12 20:01 UTC] tony2001@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 08:00:01 2025 UTC |
Description: ------------ No descriptions, sorry. Reproduce code: --------------- <?php declare(ticks = 1); class Daemon { private $threads = array(); function __construct() { echo posix_getpid() . ' Daemon::construct()' . "\n"; for ($i = 0; $i < 5; $i++) $threads[] = new Thread; } function __destruct() { echo posix_getpid() . ' Daemon::destruct()' . "\n"; } } class Thread { function __construct() { echo posix_getpid() . ' Thread::construct()' . "\n"; $this->pid = pcntl_fork(); if ($this->pid == -1) throw new Exception; if ($this->pid) { pcntl_wait($status); return; } echo posix_getpid() . ' Thread::child()' . "\n"; exit; } function __destruct() { echo posix_getpid() . ' Thread::destruct()' . "\n"; } } new Daemon; ?> Expected result: ---------------- 77080 Daemon::construct() 77080 Thread::construct() 77081 Thread::child() 77081 Daemon::destruct() 77081 Thread::destruct() 77080 Thread::construct() 77082 Thread::child() 77082 Daemon::destruct() 77082 Thread::destruct() 77082 Thread::destruct() 77080 Thread::construct() 77083 Thread::child() 77083 Daemon::destruct() 77083 Thread::destruct() 77083 Thread::destruct() 77083 Thread::destruct() 77080 Thread::construct() 77084 Thread::child() 77084 Daemon::destruct() 77084 Thread::destruct() 77084 Thread::destruct() 77084 Thread::destruct() 77084 Thread::destruct() 77080 Thread::construct() 77085 Thread::child() 77085 Daemon::destruct() 77085 Thread::destruct() 77085 Thread::destruct() 77085 Thread::destruct() 77085 Thread::destruct() 77085 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Daemon::destruct() Actual result: -------------- 77080 Daemon::construct() 77080 Thread::construct() 77081 Thread::child() 77080 Thread::construct() 77082 Thread::child() 77080 Thread::construct() 77083 Thread::child() 77080 Thread::construct() 77084 Thread::child() 77080 Thread::construct() 77085 Thread::child() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Thread::destruct() 77080 Daemon::destruct()