PHP本身没有定时自动执行的功能,也不支持多线程。但是结合Task Scheduler和cURL,就可以弥补PHP的上述两个缺陷,同时还可以脱离Apache服务器环境,在任意路径下运行PHP脚本。

知识准备

调用cURL多程序抓取网页的PHP脚本

batch.php

$urls = array(

'http://www.baidu.com',

'http://www.csdn.net',

'http://www.google.com.hk'

);

// 初始化多线程

$mh = curl_multi_init();

// 向多线程中添加每个单独的cURL

$conn = array();

foreach ($urls as $key => $url) {

$conn[$key]= curl_init($url);

curl_setopt($conn[$key],CURLOPT_HEADER, 0);

curl_setopt($conn[$key],CURLOPT_RETURNTRANSFER, 0);

curl_multi_add_handle($mh,$conn[$key]);

}

// 执行cURL多线程

do {

$mrc= curl_multi_exec($mh, $active);

}

while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK){

if(curl_multi_select($mh) != -1) {

do{

$mrc= curl_multi_exec($mh, $active);

}

while($mrc == CURLM_CALL_MULTI_PERFORM);

}

}

// 释放多线程中的每个cURL线程

foreach ($urls as $key => $url) {

curl_error($conn[$key]);

curl_multi_remove_handle($mh,$conn[$key]);

curl_close($conn[$key]);

}

// 关闭多线程

curl_multi_close($mh);

?>

需要说明的是,cURL在PHP中的多线程处理其实并不是真正的多线程,而是用单线程批处理模拟的多线程效果。

设置环境变量

为了方便调用php.exe,需要在环境变量的系统变量Path中添加php.exe所在目录的路径,如下图所示:

设置Windows Task Scheduler

Windows 7环境下,启动Task Scheduler(任务计划程序)的方式有两种,分别是:

1.      控制面板→管理工具→任务计划程序;

2.      开始→运行→输入“任务计划程序”或者“scheduled task”,回车。

设置计划任务来自动调用PHP脚本的步骤如下:

1.      点击“创建基本任务”,进入导航

2.      第一步,输入计划任务的名称和描述

3.      设置任务开始的时间

4.      设置任务执行的具体操作

前述调用cURL的PHP脚本放在E盘根目录下,脱离了Apache服务器环境。

此处填写的程序(或脚本)和参数需要再命令行下测试通过方才有效。

5.      完成后打开属性对话框,在“触发器”中点击“编辑”,设置自动重复执行的间隔

以上就是设置任务计划程序的过程,之后每隔5分钟会弹出一个php.exe的DOS窗口,则设置成功。

php 计划任务 curl,通过Task Scheduler定时运行调用cURL的PHP脚本 | 学步园相关推荐

  1. synctoy 自动运行_安排SyncToy在Windows 7中使用Task Scheduler自动运行

    synctoy 自动运行 SyncToy is a great tool to help you keep your files and folders synced between drives a ...

  2. curl socket 访问_使用Curl、socket、file_get_contents三种方法POST提交数据 | 学步园

    # <?php # /** # * Socket版本 # * 使用方法: # * $post_string = "app=socket&version=beta"; ...

  3. 定时循环调用FastCopy自动备份脚本

    @echo offfor /l %%i in (1,1,2147483647) do (echo %%iTIMEOUT /T 180"C:\Users\admin\FastCopy\fast ...

  4. task文件服务器无法输入,Win10系统无法启动task scheduler服务的解决方法

    Win10无法启动"task scheduler服务"怎么办?task scheduler是一个任务调度程序,用户可以使用task scheduler自动运行计算机任务.在Win1 ...

  5. Windows 任务计划程序(task scheduler)介绍

    一.入口 任务计划程序在windows绝大多数版本都是系统自带,可以通过一下入口找到 1.开始--(windows)管理工具 2.服务器管理器--工具(server版) 3.我的电脑(此电脑)--点击 ...

  6. Windows任务计划程序Task Scheduler笔记

    微软文档居然搜不到了 Windows任务计划程序已经存在许多年了,原来在微软的TechNet上有详细的操作介绍的,现在发现网站改版,原来的介绍居然搜索不到了,微软的平台上出现这种事情,也是比较吃惊了. ...

  7. 无法打开计算机上的event log服务,win 2008 r2无法启动(Task Scheduler和windows eventlog 服务...

    Windows Server 2008 r2: 无法启动(Task Scheduler和windows eventlog 服务) =================================== ...

  8. win10系统CompatTelRunner或task scheduler占用CPU过高的解决方法

    win10系统的"C:\Windows\System32\CompatTelRunner.exe"占用过高的CPU,而且经常莫名其妙的启动,该问题其实是"客户体验改善计划 ...

  9. python每天定时9点执行_win10设置Python程序定时运行(设置计划任务)

    楼主最近写了一个简单的Python程序,想让这个小程序每天上午8点定时运行一次,因为我的电脑是Windows系统,无法使用Linux下强大的crontab命令,所以我只好求助于度娘.我搜到了好几个相关 ...

最新文章

  1. 又一个jquery+flash上传插件
  2. PW Live 直播 | 北邮博士生纪厚业:异质图神经网络之模型和应用
  3. 牛客题霸 NC24 删除有序链表中重复的元素-II
  4. 架构-浅谈MySQL数据库优化
  5. php print div,JavaScrip实现PHP print_r的数功能(三种方法)
  6. python背景图片加载代码_2019.12.05-背景图片设置代码
  7. hihocoder第238周:杨氏矩阵的个数
  8. Mac IDEA切换主题颜色
  9. 算法(arithmetic)
  10. 计算机没有打字键盘显示不出来,键盘打不出字怎么回事
  11. 忘记apusic应用服务器web控制台admin密码怎么办?
  12. 客服充值退款小套路你们会识别吗?
  13. WebLogic 10.3.6.0 部署安装问题(简装版)
  14. Centos 7yum安装LAMP
  15. Java学习查漏补缺及知识点整理
  16. 根据地址生成客户地图及热力图(百度地图API)
  17. 国产芯片---带使能端、轨到轨的运算放大器MS8093
  18. 关于计算机房弱电工程的书籍,弱电工程计算机机房设计规范..doc
  19. 深圳大学计算机科学,深圳大学计算机科学与技术-深圳大学计算机与软件学院.PDF...
  20. php 文字输入输出

热门文章

  1. recyclerview item点击无效_让你彻底掌握RecyclerView的缓存机制
  2. 并联串联混合的电压和电流_串、并联电路中的电流与电压规律
  3. 线程的状态转换、sleep()、wait()、yeild()、终止线程的方法、线程之间的协作(join()、wait() notify() notifyAll()、await() signal() )
  4. java泛型基类list_泛型:列表?扩展Animal与List Animal相同吗?
  5. signal(SIGCHLD, SIG_IGN) 和 signal(SIGPIPE, SIG_IGN) 使用场景
  6. DNS、IP地址、子网掩码和网关
  7. html tab选项卡 控件,tab选项卡插件
  8. 能源36号文解读_中国能源报
  9. 计算机考试单招考试面试,单招考试考什么内容?面试一般会问什么?
  10. Codeforces div2 #499 B. Planning The Expedition 大水题