发布时间:2014-09-05 10:25:22作者:知识屋
<?php /* * Sharing symbols 101 * @NOTE Thread::fetch was never included in a release and was superceeded by object handlers * pthreads allows read access to thread data from any context pthreads allows write access to thread data from any context carry on reading ... work in progress ... */ class TestObject { public $val; } class Fetching extends Thread { public function run(){ /* * of course ... */ $this->sym = 10245; $this->arr = array( "1", "2", "3" ); echo '6'.chr(10); /* * objects do work, no preparation needed ... * read/write objects isn't finalized .. * so do the dance to make it work ... */ $obj = new TestObject(); $obj->val = "testval"; $this->obj = $obj; echo '7'.chr(10); /* * will always work */ $this->objs = serialize($this->obj); echo '8'.chr(10); /* * nooooooo */ $this->res = fopen("php://stdout", "w"); echo '9'.chr(10); /* * tell the waiting process we have created symbols and fetch will succeed */ $this->synchronized(function(){ $this->notify(); }); echo '10'.chr(10); /* wait for the process to be finished with the stream */ $this->synchronized(function(){ $this->wait(); }); echo '11'.chr(10); } } echo '0'.chr(10); $thread = new Fetching(); echo '1'.chr(10); $thread->start(); //sleep(1); 加了这个就不能正常工作,真奇怪 echo '2'.chr(10); $thread->synchronized(function($me){ echo '3'.chr(10); $me->wait(); echo '4'.chr(10); }, $thread); echo '5'.chr(10); /* * we just got notified that there are symbols waiting */ foreach(array("sym", "arr", "obj", "objs", "res") as $symbol){ printf("/$thread->%s: ", $symbol); $fetched = $thread->$symbol; if ($fetched) { switch($symbol){ /* * manual unserialize */ case "objs": var_dump(unserialize($fetched)); break; default: var_dump($fetched); } } printf("/n"); } /* notify the thread so it can destroy resource */ $thread->synchronized(function($me){ $me->notify(); }, $thread); ?> /usr/local/php-zts/bin/php Fetch.php结果:012367891045$thread->sym: int(10245) $thread->arr: array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3"} $thread->obj: object(TestObject)#2 (1) { ["val"]=> string(7) "testval"} $thread->objs: object(TestObject)#2 (1) { ["val"]=> string(7) "testval"} $thread->res: resource(3) of type (stream) 11
如何对PHP文件进行加密方法 PHP实现加密的几种方式介绍
php生成圆角图片的方法 电脑中php怎么生成圆角图片教程
用PHP构建一个留言本方法步骤 php怎么实现留言板功能
php中三元运算符用法 php中的三元运算符使用说明
php文件如何怎么打开方式介绍 php文件用什么打开方法
PHP怎么插入数据库方法步骤 php编程怎么导入数据库教程
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
PHP 获取远程文件大小的3种解决方法 如何用PHP获取远程大文件的大小
20个实用PHP实例代码 php接口开发实例代码详细介绍
如何架设PHP服务器方法步骤 怎么搭建php服务器简单教程