整理总结了一些自己在使用pthreads时遇到的坑,不定期更新。 Env: php version: 7.0.19 pthreads version: 3.1.6 :warning:FBI WARNING 除特殊注明,本文内所有多线程相关代码的结果输出顺序都将会受线程执行顺序影响而不定,如您在实际当中发现您的结果顺序(结果一样,只是顺序错乱)和本文不一致,请保持淡定,都坐下,基本操作,基本操作。 ![TIM图片20180120215329.jpg](https://storage.liesauer.net/2018/01/2471020791.jpg) - [(new class extends \Thread {})->start()将导致代码阻塞](/blog/post/pthreads_trap.html#trap01 "(new class extends \Thread {})->start()将导致代码阻塞") - [函数中创建线程将导致函数阻塞](/blog/post/pthreads_trap.html#trap02 "(函数中创建线程将导致函数阻塞") - [Pool非继承于Threaded](/blog/post/pthreads_trap.html#trap03 "Pool非继承于Threaded") [线程中无法进行哈希表操作以及使用不可序列化的对象](/blog/post/pthreads_trap.html#trap04 "线程中无法进行哈希表操作以及使用不可序列化的对象") - 阅读剩余部分 -
- 阅读剩余部分 -
记一台老式古董机 - 阅读剩余部分 -
最近在做爬虫相关的项目,对UA有一定的要求,所以到网上找了几篇描述UA较详细的文章分享给大家。 1. [认识User-Agent - CSDN博客](http://blog.csdn.net/rj042/article/details/6991441 "认识User-Agent - CSDN博客") 2. [User agent - Wikipedia](https://en.wikipedia.org/wiki/User_agent "User agent - Wikipedia") 3. [History of the user-agent string - NCZOnline](https://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/ "History of the user-agent string - NCZOnline")
### 无题 今天晚上日常用sublime写代码,然后在某次调试的时候给我报了一个`类属性未定义`,然后我就检查是不是打代码太快字母顺序打错了,但是问题来了,我多次仔细确认了确实没打错。于是反复折腾了整晚,后来终于被我找到问题所在了!!!:rage::rage::rage: ### 我们不一样 不一样 ![1111.gif](https://storage.liesauer.net/2017/11/1542137365.gif) ![GIF.gif](https://storage.liesauer.net/2017/11/2407803860.gif) ![2222.png](https://storage.liesauer.net/2017/11/2696476414.png) ### 解决方案 ~~两部分都全局替换成自己手打的(不可复制)~~
``` new C2, 'me' => '__invoke'], ]; class C1 {} class C2 { public function __invoke() {} public function aaa() {} } class SC1 { public static function sc11() {} } foreach ($callables as $callable) { var_dump(resolveCallable($callable)); echo "\n"; } /** * 将可能可执行的内容转换成is_callable可识别的callable * 可识别内容: * 任何is_callable()===true的callable * 任意存在且含有__invoke方法的AnyClass::class * * @param string $callable 可能可执行的内容 * @param bool $return_false 当发生无法转换时,是否返回false,默认返回一个空匿名函数 * @return callable | false */ function resolveCallable($callable, $return_false = false) { if (is_callable($callable)) { return $callable; } elseif (is_string($callable) && class_exists($callable)) { return resolveCallable(new $callable, $return_false); } elseif (is_array($callable) && @$callable[1] === '__invoke') { return resolveCallable(@$callable[0], $return_false); } else { return $return_false ? false : function () {}; } } ```
域名出售
服务器推荐