php解决crontab定时任务不能写入文件问题的方法分析

本文实例讲述了php解决crontab定时任务不能写入文件问题的方法。分享给大家供大家参考,具体如下:

今天使用crontab写的定时任务没有执行,很纳闷。

crontab.php

<?php
error_reporting(0);
$time = date("Y-m-d h:i:s",time());
file_put_contents($dir."/crontab.txt","[$time]\n",FILE_APPEND);

crontab -e

*/1 * * * * /opt/php/bin/php /var/www/koastal/crontab.php

我直接运行php命令也是可以的。

/opt/php/bin/php /var/www/koastal/crontab.php

然后我把写入文件的命令改成输出,然后存到一个文件里面就可以了。

crontab.php

<?php
error_reporting(0);
$time = date("Y-m-d h:i:s",time());
echo $time;

crontab -e

*/1 * * * * /opt/php/bin/php /var/www/koastal/crontab.php >> /var/www/koastal/log.txt

这说明crontab命令是正常的,php也只正常执行的,于是我开始怀疑人生。

网上查了查资料发现,原来是crontab命令的php是执行在cli模式下的,不能正确识别相对路径。

我之所以直接运行php命令没有报错是因为我设置了error_reporting(0);

所以我们给它绝对路径就好了,如下:

<?php
error_reporting(0);
$dir = __DIR__;
$time = date("Y-m-d h:i:s",time());
file_put_contents($dir."/crontab.txt","[$time]\n",FILE_APPEND);

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • linux下使用crontab实现定时PHP计划任务失败的原因分析

    很多人在linux下使用crontab实现PHP执行定时任务却未能成功,不能生成缓存.本文就linux下使用crontab实现定时PHP计划任务失败的原因做一分析. 一般我们linux定时执行php代码例如: */5 * * * * /usr/local/php/bin/php /home/wwwroot/1.php 其实这样是可以执行php代码的. 但是为什么很多朋友在1.php写的生成一个缓存文件没有生成呢? 这个要涉及到crontab执行php的相对路径问题. 注意在执行文件中,有包含文件

  • crontab无法执行php的解决方法

    本文分析了crontab无法执行php的解决方法.分享给大家供大家参考,具体如下: 用crontab跑php程序时,如何去调试,各人有各人的方法.我也有套方法,看一下,我是如何解决crontab执行不了php程序这个问题的. 一.php文件有没有执行权限 复制代码 代码如下: [root@linux cron]# ls -al |grep del -rwxr-xr-x  1 zwh  ftpgroup  494 10-20 16:42 del_redis.php  如果没有X,说明没有执行权限,

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

    定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppServer的概念,而http协议是一个无状态的协议,PHP只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存. 如果非要PHP去实现定时任务, 可以有以下几种解决方案: 一. 简单直接不顾后果型 <?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. se

  • CentOS下采用Crontab实现PHP脚本定时任务

    简单实现一个需求,每5分钟往特定表中插入2条数据.经过分析还是采用crontab方式靠谱,另外执行php脚本的方式,不用担心链接超时等问题. 1.准备工作,创建1个数据表"person", CREATE TABLE `person` ( `FirstName` varchar(100) NOT NULL, `LastName` varchar(100) DEFAULT NULL, `Age` varchar(100) DEFAULT NULL, PRIMARY KEY (`FirstN

  • PHP中实现crontab代码分享

    1. 准备一个标准crontab文件 ./crontab 复制代码 代码如下: # m h dom mon dow command * * * * * date > /tmp/cron.date.run 2. crontab -e 将此cron.php脚本加入系统cron 复制代码 代码如下: * * * * * /usr/bin/php cron.php 3. cron.php 源码 复制代码 代码如下: // 从./crontab读取cron项,也可以从其他持久存储(mysql.redis)

  • 如何使用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执行脚本 如果你的P

  • linux使用crontab实现PHP执行计划定时任务

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行.要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab.该文件使用的格式和 /etc/crontab 相同.当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名

  • 解析crontab php自动运行的方法

    crontab是linux自带的一个命令  使php自动运行的方法php自动运行有很多方法,这里分以下DZ以及一些通过系统完成的方法和直接触发运行驻留系统的方法.Discuz后台有个计划任务,可以使php自动运行.DZ计划任务的机制是这样:1.首先在到了触发计划任务的时间,有访问(会员,游客,搜索引擎的蜘蛛)然后触发该计划任务发生.(因为PHP是触发是语言,没有人去访问他,他什么也做不了.)2. 计划任务执行.3. 执行成功,返回执行成功的信息,更新到数据库中记录当前执行的时间,下一次需要执行的

  • 详解PHP执行定时任务的实现思路

    PHP本身是没有定时功能的,PHP也不能多线程.PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害. 一.Linux服务器上使用CronTab定时执行php 我们先从相对比较复杂的服务器执行php谈起.服务器上安装了php,就可以执行php文件,无论是否安装了nginx或Apache这样的服务器环境软件.而Linux中,使用命令行,用CronTab来定时任务,又是绝佳的选择,而且也是效率最高的选择. 首先,进入命令行模式.作为服务器的li

  • Linux环境使用crontab命令设置定时周期性执行任务【含php执行代码】

    本文实例讲述了Linux环境使用crontab命令设置定时周期性执行任务.分享给大家供大家参考,具体如下: 从linux帮助中查看crontab命令有以下参数: -u username:指定用户操作定时器 -e:编辑定时器(所有) -l:查看定时器 -r:删除定时器(从/var/spool/cron目录中删除某个用户的crontab文件,默认删除当前用户的) -i:删除定时器(删除之前给出确认提示) 使用场景1: 执行一些周期性统计的业务操作,例如每天凌晨0:00统计前一天所有业务员及各个小组的

  • Ubuntu系统下用Crontab命令定时执行PHP文件详解

    前言 一般我在开发中,常用的定时任务有2种.一种是直接调用PHP文件执行,还有一种是调用远程URL地址. 首先,先来亮相一下我们今天的主角,Crontab命令.这个是系统定时命令,作用是定时的去执行一些任务.包含一些系统级别的任务,当然用户也可以直接借用该命令来实现自己的一些计划任务. 该命令一般跟随系统启动,我们可以使用一下命令来查看是否cron是否启动 pgrep cron 如果启动了,会返回一个进程id Crontab文件一般存放于/etc目录下.我们使用,crontab -e来编辑cro

随机推荐