句柄

PHP curl_reset函数

六眼飞鱼酱① 提交于 2019-11-30 21:03:46
curl_reset— 重置libcurl会话句柄的所有选项。 说明 void curl_reset ( resource $ch ) 该函数将重新初始化cURL的所有选项值(默认值)。 注意: curl_reset() 同样会重新设置 curl_init() 的 URL 参数。 参数 ch 由 curl_init() 返回的 cURL 句柄。 返回值 没有返回值。 实例 <?php // 创建一个cURL句柄 $ch = curl_init(); // 设置 CURLOPT_USERAGENT 选项 curl_setopt($ch, CURLOPT_USERAGENT, "My test user-agent"); // 重置所有先前设置的选项 curl_reset($ch); // 发送 HTTP 请求 curl_setopt($ch, CURLOPT_URL, 'http://w3cschool.cc/'); curl_exec($ch); // the previously set user-agent will be not sent, it has been reset by curl_reset // 关闭句柄 curl_close($ch); ?>    「大理石构件」大理石打孔与大理石构件之间的关系是什么? 来源: https://www.cnblogs.com

PHP curl_multi_strerror函数

时光毁灭记忆、已成空白 提交于 2019-11-30 21:03:15
curl_multi_setopt — 返回描述错误码的字符串文本。 说明 string curl_multi_strerror ( int $errornum ) 返回描述 CURLM 错误码的字符串文本。 参数 errornum CURLM 错误代码 中的常量之一。 返回值 返回描述错误码的字符串文本, 否则返回 NULL。 实例 实例 <?php // 创建 cURL 句柄 $ch1 = curl_init("https://www.runoob.com/"); $ch2 = curl_init("http://php.net/"); // 创建一个批处理cURL句柄 $mh = curl_multi_init(); // 添加句柄到批处理句柄 curl_multi_add_handle($mh, $ch1); curl_multi_add_handle($mh, $ch2); // 执行批处理句柄 do { $status = curl_multi_exec($mh, $active); // 检查错误 if($status > 0) { // 显示错误信息 echo "ERROR!\n " . curl_multi_strerror($status); } } while ($status === CURLM_CALL_MULTI_PERFORM || $active);

PHP curl_multi_init函数

主宰稳场 提交于 2019-11-30 18:18:43
curl_multi_init — 返回一个新cURL批处理句柄 说明 resource curl_multi_init ( void ) 允许并行地处理批处理cURL句柄。 参数 此函数没有参数。 返回值 成功时返回一个cURL批处理句柄,失败时返回FALSE。 实例 这个范例将会创建2个cURL句柄,把它们加到批处理句柄,然后并行地运行它们。 <?php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); // 创建批处理cURL句柄 $mh = curl_multi_init(); // 增加2个句柄 curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $running=null; // 执行批处理句柄 do { usleep(10000)

PHP curl_multi_exec函数

﹥>﹥吖頭↗ 提交于 2019-11-30 18:17:09
curl_multi_exec — 运行当前 cURL 句柄的子连接 说明 int curl_multi_exec ( resource $mh , int &$still_running ) 处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法。 参数 mh 由 curl_multi_init() 返回的 cURL 多个句柄。 still_running 一个用来判断操作是否仍在执行的标识的引用。 返回值 一个定义于 cURL 预定义常量中的 cURL 代码。 注意: 该函数仅返回关于整个批处理栈相关的错误。即使返回 CURLM_OK 时单个传输仍可能有问题。 实例 这个范例将会创建 2 个 cURL 句柄,把它们加到批处理句柄,然后并行地运行它们。 <?php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); /

PHP curl_multi_add_handle函数

我怕爱的太早我们不能终老 提交于 2019-11-30 18:16:12
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄 说明 int curl_multi_add_handle ( resource $mh , resource $ch ) 增加 ch 句柄到批处理会话mh 参数 mh 由 curl_multi_init() 返回的 cURL 多个句柄。 ch 由 curl_init() 返回的 cURL 句柄。 返回值 成功时返回0,失败时返回CURLM_XXX之一的错误码。 实例 这个范例将会创建2个cURL句柄,把它们加到批处理句柄,然后并行地运行它们。 <?php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL, "http://www.w3cschool.cc/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); // 创建批处理cURL句柄 $mh = curl_multi_init(); // 增加2个句柄 curl_multi

php多线程采集网页的解决办法 curl多线程采集

大兔子大兔子 提交于 2019-11-30 13:32:29
既然为了学习,那么先来了解下PHP curl函数信息: PHP cURL所有函数列表: https://secure.php.net/manual/zh/ref.curl.php 以下是PHP中cURL多线程相关函数: curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄 curl_multi_close — 关闭一组cURL句柄 curl_multi_exec — 运行当前 cURL 句柄的子连接 curl_multi_getcontent — 如果设置了 CURL OPT_RETURNTRANSFER,则返回获取的输出的文本流 curl_multi_info_read — 获取当前解析的cURL的相关传输信息 curl_multi_init — 返回一个新cURL批处理句柄 curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源 curl_multi_select — 等待所有cURL批处理中的活动连接 curl_multi_setopt — 为 cURL 并行处理设置一个选项 curl_multi_strerror — Return string describing error code 一般来说,想到要用这些函数时,目的显然应该是要同时请求多个URL,而不是一个一个依次请求

jvm 对象奥秘

偶尔善良 提交于 2019-11-30 06:35:51
上一篇jvm博客中我们学习了jvm的内存模型,本篇中我们来探索 对象是如何创建的 , 对象的内存布局 , 对象是如何访问到的 。 对象的创建过程 第一步:类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中( JDK1.7 及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池 )定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 第二步:分配内存 在 类加载检查 通过后,接下来虚拟机将为新生对象 分配内存 。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。 分配方式 有 “指针碰撞” 和 “空闲列表” 两种, 选择那种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定 。 指针碰撞 :用过的内存整合到一边,没用过的内存存放到另一边,中间有一个分界值指针,只需要向没用过的内存方向将该指针移动对象内存大小即可。适用于内存规整的情况。 空闲列表 :虚拟机会维护一个列表,该列表中记录那块内存是可用的,再分配的时候,找一块足够大的内存分配给对象实例,最后更新列表记录,适用于内存不规整的情况。

文件操作

自作多情 提交于 2019-11-30 01:44:00
一、文件操作 文件的定义 文件是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 python中的文件操作 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r #2. 通过句柄对文件进行操作 data=f.read() #3. 关闭文件 f.close() f=open('a.txt','r')的过程分析 由应用程序向操作系统发起系统调用open(...) 操作系统打开该文件,并返回一个文件句柄给应用程序 应用程序将文件句柄赋值给变量f 文件的回收 打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为: 1、f.close() #回收操作系统级打开的文件 2、del f #回收应用程序级的变量 # 其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源, # 而python自动的垃圾回收机制决定了我们无需考虑del f,这就要求我们,在操作完毕文件后,一定要记住 # f.close()

jvm学习(一)

浪子不回头ぞ 提交于 2019-11-29 23:42:47
jvm Java内存区域 线程私有 1.程序计数器 线程执行Java方法时,记录的是正在执行的虚拟机字节码指令的地址;线程执行Native方法时,值为空(undefined) 唯一一个在Java虚拟机规范中没有规定任何OOM情况的区域 2.Java虚拟机栈 生命周期与线程相同。 描述了Java方法执行的内存模型:每个方法执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。一个方法从调用至执行完成的过程对应着一个栈帧在虚拟机栈中入栈到出栈的过程 异常状况:线程请求的栈深度大于jvm允许的深度,抛出StackOverflowError异常;若虚拟机栈可以动态扩展,如果扩展时无法申请到足够的内存,就抛出OOM异常 3.本地方法栈 与Java虚拟机栈的区别只在于本地方法栈为jvm使用到的Native方法服务。hotspot虚拟机把两者合二为一。 线程共享 1.Java堆 唯一的目的是存放内存实例,几乎所有对象实例都在这里分配内存(例外:栈上分配、标量替换) Java堆是GC管理的主要区域,由于gc基本都采用分代收集算法,Java可以细分为Eden区、from survivor区、to survivor区等 线程共享的Java堆中可能划分出多个线程私有的分配缓冲区(thread local allocation buffer, TLAB)

Perl内置特殊变量

瘦欲@ 提交于 2019-11-29 22:56:13
一、 正则表达式 特殊 变量: 1、 $n   :包含上次模式匹配的第n个子串 2、 $&    :前一次成功模式匹配的字符串 3、 $`   :前次匹配成功的子串之前的内容 4、 $’    :前次匹配成功的子串之后的内容 5、 $+   :前一次使用括号的模式匹配的字符串. 二、 文件句柄 特殊 变量: 1、 $|   :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件 2、 $%   :当前输出页号 3、 $=   :当前每页长度 4、 $-   :当前页剩余的行数 5、 $~   :当前报表输出格式的名称.默认值是文件句柄名. 6、 $^   :当前报表输出表头格式的名称.默认值是带后缀”_TOP”的文件句柄名. 三、 全局特殊 变量: 1、 $_ 和 $ARG   :默认输入和模式匹配内容.如果不指定接收输入的变量或执行模式匹配的字符串 2、 $. 和 $NR   :前一次读的文件句柄的当前行号 3、 $/ 和 $RS   :输入记录分隔符,默认是新行字符.如用undef这个变量,将读到文件结尾 4、 $, 的 $OFS   :输出域分隔符. 5、 $\ 和 $ORS   :输出记录分隔符 6、 $:    :断行字符,默认是”\n-”三个字符 7、 $!   :这个变量的数字值是errno的值