淺談 linux 例行性工做 crontab (linux定時任務)

定時任務你們都挺說過,就比如你手機上的鬧鐘,到了指定的時候就會響起。

今天在對redis緩存進行定時儲存時又操做了一把,發現一些細節,寫的很差。你們就將就看吧,

首先 簡單介紹一下linux 例行性工做 兩種方式,php

主要有兩種:mysql

  1. at   (和下面同樣,只是它只定時執行一次就結束)
  2. crontab

 

演示定時執行php程序將數據插入數據庫:

一個案例表:blog

1 CREATE TABLE `blog` (
 2   `blog_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 3   `blog_title` varchar(200) NOT NULL DEFAULT '' COMMENT '標題',
 4   `blog_content` text NOT NULL COMMENT '內容',
 5   `blog_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '時間',
 6   `uid` int(10) unsigned NOT NULL COMMENT '用戶id',
 7   `cat_id` int(10) unsigned NOT NULL COMMENT '分類',
 8   `blog_look` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '瀏覽量',
 9   PRIMARY KEY (`blog_id`),
10   KEY `blog_time` (`blog_time`),
11   KEY `uid` (`uid`),
12   KEY `blog_look` (`blog_look`),
13   KEY `cat_id` (`cat_id`)
14 ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='文章表'

一個php文件:/www/123.php (請無視連接數據庫面向過程函數,僅供演示)

1 <?php
      2 
      3 $connect = mysql_connect('localhost','root','12315Smm');
      4 mysql_select_db('mydb',$connect);
      5 mysql_query('set names utf8',$connect);
      6 $time=time();
      7 $sql="INSERT INTO `blog` VALUES (null, '我是標題', '我是內容',{$time}, '1', '1', '0')";
      8 mysql_query($sql,$connect);
      9 
     10

 

 

執行  php /www/123.php  先插入一條數據測試代碼是否正確。(ps : php是否加入環境變量, 能夠執行php -v 測試 ,如沒有請找到php程序位置執行,如 /usr/local/php/bin/php  /www/123.php) 

還有在執行時,可能會有提示錯誤:

PHP Warning: Module 'xxxx' already loaded in Unknown on line 0   ps:(xxxx 表明一些模塊名如curl,redis)

緣由

有兩種方法來加載在PHP中大多數擴展。一種是直接編譯擴展到PHP二進制文件。另外一種是經過一個ini文件動態加載的共享擴展。這些錯誤代表,動態擴展正在經過.ini文件加載,即便它們已經被編譯到PHP二進制文件。linux

解決方法:

要解決此問題,您必須編輯你的php.ini(或extensions.ini文件)文件和註釋掉那些已經編譯的擴展。例如,修改完成後,由於編譯安裝的模塊不須要引入redis

例:extension=redis.so 改成   ;extension=redis.so sql

執行 php -v 能夠看到提示沒有了數據庫

 

 

設置定時任務 :

命令:crontab -e緩存

添加定時任務,這裏添加一條,如多條,每條任務換行,curl

前面的   「*/1  *  *  *  *  」   分別表明 :分鐘,時,日,月,星期。函數

  • *      表明任意時刻,
  • */1   表明沒分鐘執行一次,
  • /usr/local/php/bin/php    執行的程序php (注意,這裏不能用環境變量,必須絕對路勁,不然失敗!
  • /www/123.php       要執行的代碼或文件 

 

:wq 保存就OK;測試

查看效果;

 

 自動插入成功,

其餘執行的方式 同理,

大半夜寫的不容易,轉載請註明出處!!有不足之處還請大神指點。

相關文章
相關標籤/搜索