批量下载文件一般使用循环的方式,逐一执行下载。但在带宽与服务器性能允许的情况下,使用多进程进行下载可以大大提高下载的效率。本文介绍php利用curl的多进程请求方法,实现多进程同时下载文件。
原理:使用curl的批处理方法,开启多进程,实现批量下载文件。
主要方法:
curl_multi_init
返回一个新cURL批处理句柄
curl_multi_add_handle
向curl批处理会话中添加单独的curl句柄
curl_multi_exec
运行当前 cURL 句柄的子连接
curl_multi_getcontent
如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流
curl_multi_remove_handle
移除curl批处理句柄资源中的某个句柄资源
cu...
PHP在很多时候不适合做常驻的SHELl进程, 他没有专门的gc例程, 也没有有效的内存管理途径. 所以如果用PHP做常驻SHELL, 你会经常被内存耗尽导致abort而unhappy.
而且, 如果输入数据非法, 而脚本没有检测, 导致abort, 也会让你很不开心.
那? 怎么办呢?
呵呵, 别着急, 多进程来帮您!
那,这是为什么呢?
优点:
1. 使用多进程, 子进程结束以后, 内核会负责回收资源
2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程.
3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚.
Then, 怎么做呢?
接下来, 我们使用PHP提供的POSIX和Pcntl系列函数, 来实现一个PHP命令...
已经因为没怎么需要,所以没有查这个的资料。最近有一个项目却是需要这样子的功能。
查看了PHP的手册和他人的例子,了解到基本的两种方法: (伪)多线程:借助外力
利用WEB服务器本身的多线程来处理,从WEB服务器多次调用我们需要实现多线程的程序。
引用:我们知道PHP本身是不支持多线程的, 但是我们的WEB服务器是支持多线程的. 也就是说可以同时让多人一起访问. 这也是我在PHP中实现多线程的基础. 假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php&...
本文将讨论在PHP4环境下如何使用进程间通讯机制——IPC(Inter-Process-Communication)。本文讨论的软件环境是linux+php4.0.4或更高版本。首先,我们假设你已经装好了PHP4和UNIX, 为了使得php4可以使用共享内存和信号量,必须在编译php4程序时激活shmop和sysvsem这两个扩展模块。 实现方法:在PHP设定(configure)时加入如下选项。 --enable-shmop --enable-sysvsem 这样就使得你的PHP系统可以处理相关的IPC函数了。 IPC是什么? IPC (Inter-process communication) 是一个Unix标准通讯机制,它提供了使得在同一台主...
近日心血来潮,花巨资购进多普达智能手机一台, 系统为微软的Smartphone2003 ,由于对"瘟倒死"操作系统的熟悉,很快已步入正轨,各种图片、程序安装了一大堆后,开始发挥自己的程序特长,试着为爱机写一个资源管理器的简单程序。 我选择的编程工具当然是Visual Basic NET2003,实话说Microsoft .NET Framework SDK 提供的功能实在不感恭维,微软好象又要将所有走上光明大道的.NET程序员拖入API的黑暗时代,指针、句柄、地址操作,最令人恼火就是没有为VB.net程序做WinCE的API 声明(令人怀念VB6的API浏览器)很快我就在如何启动手机中的应用程序的代码上困住了,Net没有为WinCE提供Process 对...
一般我们在java中运行其它类中的方法时,无论是静态调用,还是动态调用,都是在当前的进程中执行的,也就是说,只有一个java虚拟机实例在运行。而有的时候,我们需要通过java代码启动多个java子进程。这样做虽然占用了一些系统资源,但会使程序更加稳定,因为新启动的程序是在不同的虚拟机进程中运行的,如果有一个进程发生异常,并不影响其它的子进程。在Java中我们可以使用两种方法来实现这种要求。最简单的方法就是通过Runtime中的exec方法执行java classname。如果执行成功,这个方法返回一个Process对象,如果执行失败,将抛出一个IOException错误。下面让我们来看一个简单的例子。// Test1.java文件import java.io.*; public class ...
winlogon.exe系统进程进程文件: winlogon or winlogon.exe进程名称: Windows Logon Process描述: Windows NT用户登陆程序。这个进程是管理用户登录和退出的。而且winlogon在用户按下CTRL+ALT+DEL时就激活了,显示安全对话框。这个进程处理登录和注销任务,事实上,这个进程是必需的,它的大小和你登录的时间有关系,我曾亲眼看见这个进程占用空间的波动情况,一个是登录一个小时左右,内存在1.2MB到8.5MB之间波动;另一个是登录了40多天,内存在1.7MB到17MB之间波动。wowexec.exe当你运行一些老的应用程序(比如一些16位的程序)或者DOS控制台下运行DOS命令行程序,你就会在进程里面发现它。...
mdm.exe系统进程 进程文件: mdm or mdm.exe 进程名称: Machine Debug Manager 描 述: Debug除错管理用于调试应用程序和Microsoft Office中的Microsoft Script Editor脚本编辑器。 介 绍:Mdm.exe的主要工作是针对应用软件进行排错(Debug),说到这里,扯点题外话,如果你在系统见到fff开头的0字节文件,它们就是mdm.exe在排错过程中产生一些暂存文件,这些文件在操作系统进行关机时没有自动被清除,所以这些fff开头的怪文件里是一些后缀名为CHK的文件都是没有用的垃圾文件,可匀我馍境??换岫韵低巢??涣加跋臁6?X系统,只要系统中有Mdm.exe存在,就有可能产生以fff开头的怪文件。可以按下面...
进程文件: inetinfo or inetinfo.exe 进程名称: IIS Admin Service Helper 描 述: InetInfo是Microsoft Internet Infomation Services (IIS)的一部分,用于Debug调试除错。 介 绍:IIS服务进程,蓝码正是利用的inetinfo.exe的缓冲区溢出漏洞。 inetinfo.exe占用了100%的cpu解决方案 当我们在使用iis时,如果这时错误关机(停电等),重启机器后,再次使用iis,经常发现inetinfo.exe占用了100%的cpu,重装iis后,还是没用 这个问题很多人的解决方案就是重装机器,之前我也是那么做的,只是我是从ghost恢复,但老这样做,似乎很麻烦。终无我忍无可忍(这样的情况太多了,而且...
进程文件: alg or alg.exe 进程名称: 应用层网关服务 描 述: 这是一个应用层网关服务用于网络共享。 介 绍:一个网关通信插件的管理器,为 “Internet连接共享服务”和 “Internet连接防火墙服务”提供第三方协议插件的支持。 Internet 连接共享 (ICS)/Windows 防火墙服务(ICF)的这个子组件对允许网络协议通过防火墙并在 Internet 连接共享后面工作的插件提供支持。应用程序层网关 (ALG) 插件可以打开端口和更改嵌入在数据包内的数据(如端口和 IP 地址)。文件传输协议 (FTP) 是唯一具有 Windows Server 2003 标准版和 Windows Server 2003 企业版附带的一个插...
进程文件: [system process] or [system process] 进程名称: Windows内存处理系统进程 描 述: Windows页面内存管理进程,拥有0级优先。 介 绍:该进程作为单线程运行在每个处理器上,并在系统不处理其他线程的时候分派处理器的时间。它的cpu占用率越大表示可供分配的CPU资源越多,数字越小则表示CPU资源紧张。 System Idle Process为何物 问:在使用Windows XP的过程中,按“Ctrl+Alt+Del”键调出任务管理器,在进程中我发现一个名为“System Idle Process”的进程,它往往占用了大部分CPU资源,经常是80%以上,请问为什么它占用了那么多资源? 答:...
进程文件: lsass or lsass.exe 进程名称: 本地安全权限服务 描 述: 这个本地安全权限服务控制Windows安全机制。管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序等。 介 绍:这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是通过使用授权的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入令牌,令牌别使用启动初始的shell。其他的由用户初始化的进程会继承这个令牌的。而windows活动目录远程堆栈溢出漏洞,正是利用LDAP 3搜索请求功能对用户提交请求缺少正确缓冲区边界检查,构建超过1000个"AN...
svchost.exe 文件对那些从动态链接库中运行的服务来说是一个普通的主机进程名;最基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行):smss.exe Session Manager csrss.exe 子系统服务器进程winlogon.exe 管理用户登录services.exe 包含很多系统服务lsass.exe 管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。(系统服务) 产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务) svchost.exe 包含很多系统服务svchost.exe SPOOLSV.EXE 将文件加载到内存中以便迟后打印。(系统服务) explorer.exe 资...
PHP在很多时候不适合做常驻的SHELl进程, 他没有专门的gc例程, 也没有有效的内存管理途径. 所以如果用PHP做常驻SHELL, 你会经常被内存耗尽导致abort而unhappy.而且, 如果输入数据非法, 而脚本没有检测, 导致abort, 也会让你很不开心.那? 怎么办呢?呵呵, 别着急, 多进程来帮您! 那,这是为什么呢?优点:1. 使用多进程, 子进程结束以后, 内核会负责回收资源2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程.3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚.Then, 怎么做呢? 接下来, 我们使用PHP提供的POSIX和Pcntl系列函数, 来实现一个PHP命令解析器, 主进程负责接受用户输入, 然后fork...