PHP死循环 来处理定时任务的效率是很低的。(众多网友评价)
大家都建议使用Linux内置的定时任务crontab命令来调用php脚本来实现。

PHP定时任务的两种方法:
1、web方式调用php网页,但是这样存在安全问题,外部用户同时也可以调用此文件。

*/1 * * * * /usr/bin/wget -q -O temp.txt http://wan.coolxap.cn/cron

2、用php-cli 模式来调用 php脚本,cli是以一种命令行模式来执行php脚本

* * * * * /usr/bin/php -f /root/test.php >> test.log

使用crontab -e添加任务,在/var/spool/cron下你可以看到一个root文件。

重启服务,使修改 生效

service crond restart

crontab最细的粒度是分钟,但可以起多个任务+休眠来达到模拟 以秒为单位的任务。

* * * * * /bin/date >> /tmp/date.txt
* * * * * sleep 10; /bin/date >> /tmp/date.txt
* * * * * sleep 20; /bin/date >> /tmp/date.txt
* * * * * sleep 30; /bin/date >> /tmp/date.txt
* * * * * sleep 40; /bin/date >> /tmp/date.txt
* * * * * sleep 50; /bin/date >> /tmp/date.txt

列举个真实场景:

*/1 * * * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/closeinvalidlive
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/magicdistributed
0 0 26 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildassessment
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildprizestatement

当定时任务不起作用
定时任务,里面执行php脚本。
发现不能直接执行,需要切换到www用户来执行php脚本,
否则,脚本所做的操作都是以 root 的权限来执行的,比如创建文件目录 和 下载的图片都是属于 root 用户组。
直接导致到的问题是,web网页用户由于权限不足就无法对该目录进行操作,比如root创建的目录,web用户无法在该目录上传图片。

解决方案如下:

切换到www用户来执行命令

su www "-c cd /alidata/www/wwwroot/17xap/e/caidiscuz/ && /aliyun/webserver/php5.2.17/bin/php pushnews2.php -9 -u"

另外解决图片下载时发现的一个解决问题的小技巧。
用接口的形式来访问某个php文件时,发现下载图片失败,提示权限不足 无法在该目录做图片存储操作。
然后检查目录的权限是wr-wr-wr 0666,理论上是支持目录的读写。但为什么不能做图片下载操作呢?
因为没有x权限就无法在该目录下执行任何命令,包括mkdir、ls等。创建图片不仅需要 w权限还需要x权限。
改为wrx-r-xr-x 0755权限后就能正常下载图片。

解决问题的技巧是先给足0777权限后,待问题解决了,确定是目录权限不足导致脚本无法正常运行的时候,再把目录的权限收回来,逐步提高权限。

PHP结合Linux的cron命令实现定时任务的更多相关文章

  1. 使用cron命令配置定时任务(cron jobs)

    原文 http://www.cnblogs.com/end/archive/2012/02/21/2361741.html 开机就启动cron进程的设置命令:chkconfig --add crond ...

  2. linux crontab 定时命令

    一直认为Timer是比较好的实现定时器的方法,后来遇到在linux下的命令制定定时任务才发现,Timer的劣势所在,在Timer的时候很可能你的任务会被当做一个死程序被杀掉等等......上次一个同事 ...

  3. 定时任务 cron命令

    一名linux新手,因为项目需要现在在学习linux操作系统. 因项目需要做一个定时任务,每个小时访问某一个url一次,通过参考很多大神的博客学会了crontab命令的使用方法 crontab -u ...

  4. Linux /etc/cron.d作用(转自 定时任务crontab cron.d)

    原文链接:http://huangfuligang.blog.51cto.com/9181639/1608549 一.cron.d增加定时任务 当我们要增加全局性的计划任务时,一种方式是直接修改/et ...

  5. linux之cron定时任务介绍

    前言 linux系统有一个专门用来管理定时任务的进程cron,一般是设置成开机自启动的,通过添加任务可以让服务器定时执行某些任务. cron介绍 linux系统有一个专门用来管理定时任务的进程cron ...

  6. linux中Cron定时任务系统命令详解

    分类:Linux VPS教程 作者:阿川 发布时间:October 13, 2011 有很多同学在购买VPS之后,需要用到计划任务.但是又对计划任务不太了解,所以.今天我们的帮助中心主要是给大家提供一 ...

  7. 工作中常用的Linux命令:crontab命令,定时任务执行命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  8. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

  9. Cron和Spring定时任务

    1.Java Spring spring定时任务cronExpression的值(配置定时时间)格式说明: 一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左至 ...

随机推荐

  1. 搭建MHA环境【2】安装mysql-5.6 + mysql复制

    本例中mysql的安装方式选用了二进制包安装方案.mysql复制用半同步复制方案 [1]安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次 ...

  2. Swift UI

    概述 Apple近日发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言.   废话不多说,下面我就来学习使用Swift创建一个简单的UI应用 ...

  3. [Google Code Jam (Qualification Round 2014) ] B. Cookie Clicker Alpha

    Problem B. Cookie Clicker Alpha   Introduction Cookie Clicker is a Javascript game by Orteil, where ...

  4. vs 自动生成core dump文件

    一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...

  5. qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)

    1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要    毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...

  6. Intent.ACTION_TIME_TICK 广播

    Intent.ACTION_TIME_TICK 广播需要动态注册,不能在清单文件配置. TimeReceiver mBroadcastReceiver = new TimeReceiver(); In ...

  7. 一道有关球赛队员分配的C++程序题目

    题目描述: 两个球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已经抽签决定比赛名单. 有人向队员打听比赛安排的名单.a说他不和x比,c说他不和x,z比,请编程找出三队赛手的名单. ...

  8. Java中ThreadLocal无锁化线程封闭实现原理

    虽然现在可以说很多程序员会用ThreadLocal,但是我相信大多数程序员还不知道ThreadLocal,而使用ThreadLocal的程序员大多只是知道其然而不知其所以然,因此,使用ThreadLo ...

  9. IO队列和IO调度

    IO体系概览 先看看本文主题IO调度和IO队列处于整个IO体系的哪个位置,这个IO体系是非常重要的,了解IO体系我们可以对整个IO过程有个全面的认识.虽然一下两下并不清楚IO体系各个部分的细节,但是我 ...

  10. C++第15周(春)项目3 - OOP版电子词典(一)

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序中须要的相 ...