使用curl_multi_exec并发请求外部接口
有时候在一个PHP方法中要多次调用外部的接口,为了优化代码,提高效率,我们不妨使用curl_multi_exec并发处理多个请求,这样可以明显地提高获取响应数据的速度,减少程序执行的时间,下面是一个实际运行的例子。
<?php
/**
* 使用curl并行发送多个请求获取数据
* @param array $urls 多个请求数组
* @return array
*/
function sendMultiRequest(array $urls)
{
$conn = [];
$res = [];
//创建批处理curl句柄
$mh = curl_multi_init();
foreach ($urls as $k => $item) {
$conn[$k] = curl_init(); //初始化各个子连接
//...
这是一个简单实用的工具,用于定期执行一个指定的函数。从本质上来说,它是封装原生 Window 对象的 setInterval/clearInterval 机制。
PeriodicalExecuter 具有一项值得注意的非常有用的特性:它会阻止回调函数的多次并发执行, 并顺延执行的时间间隔(它维护一个内部的运行标志,用于屏蔽回调函数运行时的产生的异常)。如果需要定时与用户进行交互 (如使用一个 prompt 或 confirm),这非常有用,它将会避免在等待响应时产生多个信息框。
当然,当前一个非常好的观点是:应尽量使用一个实际的对象,而不是维护一个全局的定时器句柄。这也算是 PeriodicalExecuter 的一项优势吧。
创建 PeriodicalExecuter 对象
PeriodicalExe...
exec 方法
用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
rgExp.exec(str)
参数
rgExp
必选项。包含正则表达式模式和可用标志的正则表达式对象。
str
必选项。要在其中执行查找的 String 对象或字符串文字。
说明
如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。
如果为正则表达式设置了全局标志,exec 从以...