技巧:详解PHP实现定时任务的五种方法

优采云 发布时间: 2022-11-03 04:13

  技巧:详解PHP实现定时任务的五种方法

  详解PHP实现定时任务的五种方法

  更新时间:2016-07-25 09:52:14 发布者:daisy

  这些天,我需要使用 PHP 编写一个定期爬取网页的服务器应用程序。我在网上搜索了解决方案,找到了几种解决方案,总结如下。

  对于一个网站来说,定时运行任务是比较重要的任务,比如定时发布文档、定时清理垃圾信息等等。目前的网站大部分都是用PHP开发的动态语言,而PHP的实现决定了它没有Java、.Net等AppServer的概念,而http协议是无状态协议。PHP 只能由用户触发和调用。调用后会自动退出内存,没有常驻内存。

  如果必须使用 PHP 来实现定时任务,可以有以下解决方案:

  1.简单直接的鲁莽

  

cron.php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去

$interval=60*30;// 每隔半小时运行

do{

$run = include 'config.php';

if(!$run) die('process abort');

<p>

//ToDo

sleep($interval);// 等待5分钟

}

while(true);</p>

  通过更改 config.php 的返回 0 来停止程序。一个可行的方法是在config.php文件中与一个特殊的表单进行交互,通过HTML页面配置一些变量

  缺点:占用系统资源,运行时间长,会有一些意想不到的隐患。比如内存管理问题。

  3.简单的改进

  php脚本sleep一段时间后通过访问自身继续执行。这就像一场接力赛。这确保了每个 PHP 脚本的执行时间不会太长。它不受time_out 的限制。

  因为每个循环php文件都是独立执行的,所以这种方法避免了time_out的限制。但最好像上面那样添加控制代码。cofig.php ,以便可以终止进程。

  4.服务器计划任务

  Unix平台

  如果您使用的是 Unix 系统,则需要在 PHP 脚本前添加一行特殊代码以使其可执行,以便系统知道使用什么程序来运行该脚本。为 Unix 系统添加的第一行代码不影响脚本在 Windows 下的运行,因此您也可以使用此方法编写跨平台脚本。

  1.在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 程序的路径。

  2. 使用 Crontab 中的 URL 执行脚本

  如果你的 PHP 脚本可以通过 URL 触发,你可以使用 lynx 或 curl 或 wget 来配置你的 Crontab。

  以下示例使用 Lynx 文本浏览器访问 URL 以每小时执行一个 PHP 脚本。Lynx 文本浏览器默认以会话模式打开 URL。但是,如下所示,我们使用 lynx 命令行上的 -dump 选项将 URL 输出转换为标准输出。

  

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

  下面的示例使用 CURL 访问 URL 以每 5 分钟执行一次 PHP 脚本。Curl 默认在标准输出上显示输出。使用“curl -o”选项,您还可以将脚本的输出转储到临时文件 temp.txt。

  

<p>

*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php</p>

  以下示例使用 WGET 访问 URL 以每 10 分钟执行一次 PHP 脚本。-q 选项表示安静模式。“-O temp.txt”表示将输出发送到临时文件。

  

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

  5.ini_set函数使用详解

  PHP ini_set 用于设置 php.ini 的值,该值在函数执行时生效。脚本结束后,设置无效。不用打开php.ini文件就可以修改配置,对于虚拟空间来说非常方便。

  函数格式:

  

string ini_set(string $varname, string $newvalue)

  并非所有参数都可以配置,请参阅手册以获取列表。

  常用设置:

  

@ ini_set('memory_limit', '64M');

  menuy_limit:设置脚本可以申请的最大内存字节数,这有助于编写不好的脚本消耗服务器上的可用内存。@ 符号表示不输出错误。

  

@ini_set('display_errors', 1);

  display_errors:设置错误信息的类别。

  

@ini_set('session.auto_start', 0);

  session.auto_start:是否自动开启会话处理,设置为1时,程序可以使用不带session_start()的session手动开启会话,

  如果参数为0,并且没有手动打开会话,会报错。

  

@ini_set('session.cache_expire', 180);

  session.cache_expire:指定客户端缓存中会话页面的有限期限(分钟)。默认值为 180 分钟。如果设置了 session.cache_limiter=nocache,则此处的设置无效。

  

@ini_set('session.use_cookies', 1);

  session.use_cookies:客户端是否使用cookies保存会话ID;

  

@ini_set('session.use_trans_sid', 0);

  session.use_trans_sid:是否使用明文显示URL中的SID(会话ID),

  不允许使用默认设置,因为它会给您的用户带来安全风险:

  用户可以通过 email/irc/QQ/MSN 等方式告诉其他人收录有效 sid 的 URL。

  收录有效 sid 的 URL 可以保存在公共计算机上。

  用户可以将具有固定 SID 的 URL 保存在他们的采集夹或浏览历史记录中。基于 URL 的会话管理总是比基于 cookie 的会话管理风险更大,应该禁用。

  PHP 计时任务是一个非常有趣的东西。以上是本文提供的一些解决方案。您也可以通过本文的思路开发自己的解决方案。希望能帮助到每个有需要的人。

  技巧:SEO外链高级操作策略

  许多SEO认为反向链接对SEO影响不大,但事实并非如此。外部链接对SEO还是很有帮助的,但前提是高质量的外部链接。

  由于几乎所有优质的网站都不允许其他网站在自己的平台上发外链,所以好的外链平台越来越少,而且越来越多更难获得它们。太多的SEO会去一些垃圾网站发布外链,所以外链质量很差,当然对SEO没有帮助。

  接下来,汨罗SEO来聊聊SEO的高级运营策略。

  首先,我们需要了解外部链接的作用

  1 吸引蜘蛛到 网站

  如果网站的内容是收录,需要吸引蜘蛛到网站进行爬取,蜘蛛通过连接发现新的内容和网站,所以去发布外部的外部链接可以吸引地址爬取页面

  2 增加网站的权重

  外链也是一个连接,所以外链也可以传递权重,所以优质的外链可以给网站加票,有利于排名

  3. 给网站带来流量

  如果一个网站 想要产生收益,它必须有用户。通过外部链接,我们可以吸引潜在用户到我们的网站浏览和转化

  外部链接的形式

  

  1.纯文本

  纯文本形式的外部链接是无法点击的,源码中是一个URL。例如:

  2.链接形式

  链接表单是一个可点击的外部链接,它的第二个文本也是一个链接栏比如源代码中的A标签

  3.锚文本形式

  锚文本是可点击的外部链接,其锚文本是可点击的文本。例如:汨罗SEO

  外链的有效原理

  1.以上链接只对收录的页面生效

  2. 收录页面的权重影响外链的质量。网站的权重越高,上述外链传递的权重就越大,

  外链操作过程中需要注意的事项:

  1.不要欺骗外部链接。在百度眼里,如果一个网站作弊,会导致被k站封杀

  1.购买链接:从一些外链购买平台购买,黑色网站等锚文本点也会导致K

  

  锚文本过于单一:如果一个网站的所有锚文本都来自同一个关键词,那么明显是故意发外链,也会被判定为作弊

  全部指向首页:如果一个网站的外链全部指向首页,也是作弊的表现

  外链群发:不要使用任何外链群发工具进行外链群发

  所以正确的外链思维

  1、外链来源不能太单一,要多找外链平台

  2、外链要追求稳定,最好不要发布经常删除外链的平台

  3、不要在垃圾平台发布外链,都是垃圾外链

  4.垃圾外链越多,风险越大,所以最好只建立稳定安全的外链,然后关注用户需求

  5.如果想要稳定的外链,可以考虑进入一些SEO圈子,交换友情链接

  6. 最好引导用户帮助我们发布外部链接,比如送一些小礼物

  7.如果垃圾外链过多,使用百度站长平台拒绝这些垃圾外链

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线