当前位置:  编程技术>php
本页文章导读:
    ▪利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法       准备工作: ① 首先要会使用ThinkPHP这个框架 ② 最好有些ajax的基础(可以去看下小飞的另外一篇博文:Ajax实时验证"用户名/邮箱等"是否已经存在) ③ 4个js文档(点此免积分下载) 先贴上.........
    ▪如何使用Linux的Crontab定时执行PHP脚本的方法       下面介绍Crontab的两种方法。 一、在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。 每一小时执行myscript.php如下: 代码如下:.........
    ▪PHP定时执行计划任务的多种方法小结       PHP定时执行的三种方式实现 1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新 具体实现 windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概.........

[1]利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
    来源: 互联网  发布时间: 2013-11-30
准备工作:
① 首先要会使用ThinkPHP这个框架
② 最好有些ajax的基础(可以去看下小飞的另外一篇博文:Ajax实时验证"用户名/邮箱等"是否已经存在)
③ 4个js文档(点此免积分下载)

先贴上源代码:
代码如下:

<script type="text/javascript" src="/blog_article/__PUBLIC__/js/base.js"></script>
<script type="text/javascript" src="/blog_article/__PUBLIC__/js/prototype.js"></script>
<script type="text/javascript" src="/blog_article/__PUBLIC__/js/mootools.js"></script>
<script type="text/javascript" src="/blog_article/__PUBLIC__/js/Ajax/ThinkAjax.js"></script>
<script type="text/javascript">
function checktitle()
{
ThinkAjax.send('__URL__/checktitle','ajax=1&title='+$('title').value,'','checkbox');
}
</script>
<form action="/blog_article/__URL__/insert/index.html" method="post" id="myform">
<table>
<tbody>
<tr>
<td width="45" >标题:</td>
<td>
<input type="text" id="title" name="title">
<input type="button" value="检查" onClick="checktitle();">
</td>
<td>
<span id="checkbox"></span>
</td>
</tr>
</tbody>
</table>
</form>

代码解释:
为“检查”按钮添加一个onclick事件,当按钮被点击时,调用checktitle()函数
在checktitle函数中,我们只用到了ThinkAjax对象中的成员方法send
    send:function(url,pars,response,target,tips,effect){……}
可以看出ThinkAjax.send方法共有6个参数:
参数url:表示要将客户端浏览器传输过来的数据提交到服务器上的哪个方法进行处理,我这里提交给“当前模块下的checktitle方法”处理
参数pars:相当于ajax中的send方法中的参数string,表示要提交过去的数据,该参数只用于post方式传值
参数response:自定义的回调函数,如果定义了回调函数,则服务器处理完提交过去的数据之后,将会把处理后的数据交给回调函数进行处理。该回调函数有两个参数:①data②status 参数data:将服务器端处理后的数据赋给data 参数status:表示处理后的状态信息,1表示成功 0 表示失败
参数target:表示将处理后的数据在哪个地方进行显示(或输出),比如:我将此参数赋为:checkbox,表示处理后的数据会在id=”checkbox”的标签进行信息输出
当前模块下的checktitle方法的源代码:
代码如下:

<?php
class IndexAction extends Action
{
// 首页
public function index(){
$this->display();
}
// 检查标题是否可用
public function checkTitle()
{
if(!empty($_POST['title']))
{
$Form = D("Form");
if($Form->getByTitle($_POST['title']))
{
$this->error('标题已经存在');
}
else
{
$this->success('标题可以使用!');
}
}
else
{
$this->error('标题不能为空...');
}
}
}
?>

文章作者:WEB开发_小飞

    
[2]如何使用Linux的Crontab定时执行PHP脚本的方法
    来源: 互联网  发布时间: 2013-11-30
下面介绍Crontab的两种方法。

一、在Crontab中使用PHP执行脚本

就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
代码如下:

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php为PHP程序的路径。

二、在Crontab中使用URL执行脚本

如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。
代码如下:

00 * * * * lynx -dump http://www./myscript.php

下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。
代码如下:

*/5 * * * * /usr/bin/curl -o temp.txt http://www./myscript.php

下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。
代码如下:

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www./myscript.php

    
[3]PHP定时执行计划任务的多种方法小结
    来源: 互联网  发布时间: 2013-11-30
PHP定时执行的三种方式实现
1、windows 的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新

具体实现

windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:http://www./article/29134.htm

linux 的脚本实现
这里主要使用到crontab这个命令,

使用方式 :

crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

可以参看:http://www./article/29136.htm

PHP实现定时执行计划任务
使用php让浏览器刷新需要解决几个问题
PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
代码如下:

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=5;// 每隔5s运行

//方法1--死循环
do{
echo '测试'.time().'<br/>';
sleep($interval);// 等待5s
}while(true);

//方法2---sleep 定时执行
require_once './curlClass.php';//引入文件

$curl = new httpCurl();//实例化
$stime = $curl->getmicrotime();
for($i=0;$i<=10;$i++){

echo '测试'.time().'<br/>';
sleep($interval);// 等待5s

}
ob_flush();
flush();
$etime = $curl->getmicrotime();
echo '<hr>';
echo round(($etime-stime),4);//程序执行时间

测试的时候发现这个效率并不是很高,

 
总结:
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道。
ps:那个死循环的方法好像是恶意攻击网站经常使用的方法


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3