GVKun编程网logo

用crontab执行php(crontab php)

14

对于想了解用crontab执行php的读者,本文将提供新的信息,我们将详细介绍crontabphp,并且为您提供关于CentOS7crontab执行python脚本失败解决办法(手动可以执行)、cen

对于想了解用crontab执行php的读者,本文将提供新的信息,我们将详细介绍crontab php,并且为您提供关于CentOS7 crontab执行python脚本失败解决办法(手动可以执行)、centos使用crontab定时执行php脚本、CentOS利用crontab执行计划任务、crontab 定时执行php文件的有价值信息。

本文目录一览:

用crontab执行php(crontab php)

用crontab执行php(crontab php)

我正在尝试按计划运行php-
script。所以我认为crontab是个好主意。我正在使用的服务器在我不太熟悉的Linux上。所以我遇到的问题是,我不知道如何从php使脚本可执行。我需要引用该脚本,或将其放入可以从命令行运行php的文件夹中。所以我不知道给我的crontab提供什么路径,例如:

5  * * * * var/www/some/path/script.php

我发现有关此php可执行文件的一些模糊信息

/usr/bin/php

但是我在那里找不到任何php文件,也许我没有安装?我的php5和apache安装在:

/etc/php5

所以我的问题就变成了,是否有在任何其他文件夹中使用crontab执行php-script的脚本,还是我只缺少usr / bin /
php中的php可执行文件?

答案1

小编典典

首先在命令行中输入:

whereis php

以运行cron作业的用户身份执行此操作。这将向您显示可执行文件的路径。然后,您可以在cron条目中使用该路径(如果尚未在PATH变量中使用):

5 * * * * /your/path/to/php /var/www/some/path/script.php

编辑:php5-cli如果仅安装了Apache
PHP模块,则可能需要安装(Ubuntu软件包名称)软件包。这将为您提供可从命令行运行的二进制可执行文件。

CentOS7 crontab执行python脚本失败解决办法(手动可以执行)

CentOS7 crontab执行python脚本失败解决办法(手动可以执行)

记录一次python脚本在crontab中无法执行,处理过程,及解决办法
一、思路
python文件名:bkhq.py
文件目录:/opt/src/missions
日志目录:/opt/src/missions/logs
需求,每天下午15:41执行(需要python3执行)




那么,放到crontab中定期执行即可,由于是python文件,则写一个bkhq.sh的shell脚本

二、写脚本并放到计划
#vim bkhq.sh

#!/bin/bash
LogFile=/opt/src/missions/logs/bkhq$(date +"%Y-%m-%d").log
source /opt/py3/bin/activate
python /opt/src/missions/bkhq.py >> $LogFile 2>&1

脚本中“source /opt/py3/bin/activate”为封装了python3,执行后,python命令默认python3,非python2

#crontab -e
41 15 * sh /opt/src/missions/bkhq.sh

三、遇到问题
执行后,有错误日志生成,执行不成功,提示无法导入某模块
但是我确实是“source /opt/py3/bin/activate”使用该命令已经是使用python3来执行了,python2无法执行
另外,手动执行可以成功,说明脚本写的是没有问题的
那么,应该是别的问题:
原来 crontab 的运行环境和我们用 root 登录进去的环境都是不同的,需要在运行 Python 脚本前重新设定一下运行的环境变量




四、解决问题
既然手动执行脚本是可以成功的,而linux在启动时候,会调用/etc/profile文件,进行加载环境变量,那么我在脚本中是否也可以先调用下这个文件,开始行动:
CentOS7 crontab执行python脚本失败解决办法(手动可以执行)

我未使用shell脚本,应该都一样
下面“/opt/py3/bin/python”为python3命令(同“source /opt/py3/bin/activate”)
计划任务中,我是这样写:
41 15 * * * source /etc/profile; /opt/py3/bin/python /opt/src/missions/bkhq.py > /opt/src/missions/logs/bkhq.log 2>&1


日志中没有再记录错误日志,而记录了执行过程日志,问题解决!

centos使用crontab定时执行php脚本

centos使用crontab定时执行php脚本


首先,找到PHP安装环境目录,

whereis PHP 得到目录:假设/opt/lampp/bin/PHP,记录下来


写好PHP脚本

require_once("/home/web/wxsq/config.PHP");
$link = MysqLi_connect($host,$user,$pwd,$dbname);
if (!$link){
	echo "Error: Unable to connect to MysqL." . PHP_EOL;
	echo "Debugging errno: " . MysqLi_connect_errno() . PHP_EOL;
	echo "Debugging error: " . MysqLi_connect_error() . PHP_EOL;

	die("Connection error: " . MysqLi_connect_error());
}
MysqLi_query($link,"set character set 'utf8'");//�
MysqLi_query($link,"set names 'utf8'");

// $sql="DELETE FROM  `weixin_flag` where  nickname = '李中坤'";
// MysqLi_query($link,$sql) or die(MysqLi_error($link));

$sql="DELETE FROM  `weixin_flag` where  nickname is null and content is null";
MysqLi_query($link,$sql) or die(MysqLi_error($link));
这里要注意:

尽量不要用require 和 include, 如果非要用,就要使用绝对路径,而且要保证require或include进来的PHP没有其他相对目录的引用

不要使用/**/这种注释


编辑crontab

centos 自带crontab。没有的话,要安装

crontab -e 进入编辑模式,点击i,可开始编辑


前面4行是第一次打开就有的,估计是其他定时启动服务,不用管它。

我们enter键另起一行,如图最后一行是我的脚本.

* * * * *5个星星大有学问,同学们可以自己查找使用方法,默认的5个星星就是每1分钟执行一次你配置的脚本。

/opt/lampp/bin/PHP 是你刚才记录的PHP环境目录

autoClearData.PHP是我写的脚本文件

>> /home/...../autoLog1.html 是autoClearData.PHP的log,这可以用来调试脚本。


crontab不需要重新启动,编辑完成保存好就生效了。

若已经编辑完成,按ESC,再shift+ZZ。完成了


2s频率的定时器自动执行一段小程序。

我的需求是:每秒钟去判断数据库的一个time是否过期,过期就要及时做出处理。

所以呢,crontab可以这么写

方案一:

* * * * * sleep(1) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP

* * * * * sleep(2) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP

........
........

* * * * * sleep(60) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP

这样就要写60次,当然你觉得ok,也可以这么写。但是一个优秀的程序员肯定是受不了这种写法的


方案二:

1,找个目录新建一个crontab.sh,假设我的在/home/web/funwall/crontab.sh

内容:

step=2 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
    $(/opt/lampp/bin/PHP '/home/web/funwall/xxxxxx.PHP')
    sleep $step
done
exit 0 

2,crontab就这么写

* * * * * /home/web/funwall/crontab.sh


3,在xxxxxx.PHP写你的程序


这个看代码也知道怎么回事,* * * * * 是1分钟执行一次,而crontab.sh里是一分钟执行30次(可以改的)。


重要:请务必设置crontab.sh为可执行文件; chmod +x crontab.sh

CentOS利用crontab执行计划任务

CentOS利用crontab执行计划任务

walker的需求是每天1点钟的时候,执行一个shell脚本,下面记录walker用到的基本功能。

1、安装

2、服务相关

3、查看计划任务。基本命令行参数建议使用crontab --help查看,man crontab太繁琐。

4、查看任务执行日志。

5、/etc/crontab文件里面存放系统计划任务,/var/spool/cron/目录里面按用户存放计划任务。

6、编辑/etc/crontab配置计划任务。

  /var/spool/cron/目录里面的计划任务文件内容格式与上面雷同。区别是,/var/spool/cron/必须指定用户;/etc/crontab是系统计划任务,可以不指定用户。

7、walker还遇到一个问题提,调用jar包失败。原因是crontab的环境变量问题,可参考Linux中crontab的坑爹环境变量问题。walker只在脚本中加了下面一句导入环境变量:

这时如果还是手动执行脚本OK,但是crontab死活不执行。可以尝试在crontab中直接引入环境变量解决问题。如:

*** walker ***

crontab 定时执行php文件

crontab 定时执行php文件

1.先是测试crontab对于普通任务能否执行:
  crontab -e 
*/1 * * * * date >> /usr/local/mydate.log
保存后重启crontab :
service crond restart
过一分钟后发现/usr/local下生成了mydate.log,说明对普通的定时任务可以执行。
2.现在php脚本不能定时执行,应该是脚本的路径问题或者php的路径问题,于是,手工执行了/usr/local/bin/php /usr/he/website/call.php
发现可以正常执行。于是想到把相关的log打出来

*/1 * * * * /usr/local/bin/php /usr/he/website/call.php >>mylog.log 2>&1
过一分钟后打开mylog.log文件,发现提示的错误是:file_get_contents(./view/....)这个错误,至此错误很明显了,是相对路径的问题,把他改为绝对路径后,可以执行了。
 

如何使用Linux的Crontab定时执行PHP脚本的方法


下面介绍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.codesky.net/myscript.php

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

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

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

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

我们今天的关于用crontab执行phpcrontab php的分享就到这里,谢谢您的阅读,如果想了解更多关于CentOS7 crontab执行python脚本失败解决办法(手动可以执行)、centos使用crontab定时执行php脚本、CentOS利用crontab执行计划任务、crontab 定时执行php文件的相关信息,可以在本站进行搜索。

本文标签: