作者归档:zhengzs

写出一个比typeof运算符更准确的类型判断函数

Object.prototype.toString方法返回对象的类型字符串,因此可以用来判断一个值的类型。

上面代码调用空对象的toString方法,结果返回一个字符串object Object,其中第二个Object表示该值的构造函数。

通过函数的call方法,可以在任意值上调用Object.prototype.toString方法,帮助我们判断这个值的类型。

不同数据类型的Object.prototype.toString方法返回值如下。

也就是说,Object.prototype.toString可以得到一个实例对象的构造函数。

利用这个特性,可以写出一个比typeof运算符更准确的类型判断函数。

运行结果

使用PHP并发执行任务–curl_multi应用

注释:
1.关于curl_multi_exec函数的返回值:

返回CURLM_CALL_MULTI_PERFORM 说明curl_multi_exec需要马上被再调用一次。
返回CURLM_OK 说明已经有需要处理的数据。这时你需要进行相关处理,处理完后再次调用curl_multi_exec。
php中的curl_multi_exec是调用的curl库中的curl_multi_perform方法。代码在multi.c的230行左右。

2.此方式,虽然在获取数据和数据处理上是并行的,但是在数据处理时依然是串行的。即数据是一条条依次处理的。如果deal方法比较耗时的话,那整体会非常耗时。

php并发执行shell

最近在项目中做一个功能,是PHP调用shell来探测资源

在很快把,页面逻辑梳理好以后就开始动手,功能完成后开始测试使用,发现当多条命令发出以后,相应会非常慢,因为在PHP中循环调用,上一次执行完成后,才会调用下一步,这样就有问题了。会卡主,504等等

要不然限制用户输入的数据条数,不行,这样感觉体验太差了。于是经过和其他同事探讨,给进程加上一个超时时间,并用使用并发来解决此问题。下面上代码进化步骤

下面是主要代码