crontab-操作每个用户的守护程序和该执行的时间表。
具体的部分参数说明如下:
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。
下面是一些具体的应用实例,供大家参考。
#每天早上6点
106* * * date
#每两个小时
0*/2* * * date
#晚上11点到早上8点之间每两个小时,早上部点
0 23-7/2,8* * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4* mon-wed date
#1月份日早上4点
0 4 1 jan* date
范例
lark:~>crontab-1 列出用户目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6* * * date
0*/2* * * date
0 23-7/2,8 * * * date
linux中使用crontab必须特别注意环境变量问题,在此以执行oracle的sqlplus为例, 说明crontab的使用方法。
1,crontab 使用方法: crontab [ -e | -l | -r ] 文件名 -e:编辑任务 -l:显示任务信息 -r:删除定时执行任务信息
2,crontab中处理的文件格式为 分钟 小时 日期 月 星期 执行的文件名 *代表所有条件 5 * * * * rem /home/oracle/execsql 代表每个小时的5分钟时执行/home/oracle/execsql文件
3,对于sql等需要在特定的环境变量下运行的命令,在执行文件中必须列出。 如在oracle下执行sqlplus,必须按以下格式编写: $ cat execsql ORACLE_HOME=/ora815;export ORACLE_HOME ORACLE_OWNER=oracle;export ORACLE_OWNER ORACLE_SID=ora815;export ORACLE_SID ORACLE_BASE=/ora815/app/oralce;export ORACLE_BASE LD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATH PATH=$PATH:$ORACLE_HOME/bin:$LD_LIBRARY_PATH;export PATH NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280;export NLS_LANG /ora815/bin/sqlplus test1/test1 @test1.ext (执行@test1.ext文件,数据库的用户名/密码为test1/test1)
其中要求execsql为可执行的程序 $ ls -al execsql -rwxr-xr-x 1 oracle dba 374 Oct 07 15:17 execsql
使用crontab,使php程序在12:00运行
就按照下面的格式改一下,加在crontab就行了
00 0 * * * cd /你的程序路径;php 你的程序名字.php
这个需要编译的时候有cli或者cgi模式的php。
另外:
若无管理权限,只有虚拟空间
PHP里有个函数很有用。这是在最近的开发中才逐渐用到的。 int ignore_user_abort ( [bool setting] ) 这个函数的作用是指示服务器端在远程客户端关闭连接后是否继续执行下面的脚本。 setting 参数是一个可选参数。如设置为True,则表示如果用户停止脚本运行,仍然不影响脚本的运行(即:脚本将持续执行);如果设置为False,则表示当用户停止运行脚本程序时,脚本程序将停止运行。
php后台执行任务的代码:
ignore_user_abort(); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
do{
sleep(60); // 休眠1分钟
}while(true);
//除非在服务器上关闭这个程序,否则这断代码将永远执行下去。
?>
php操作mysql步骤:
2,mysql_select_db('database',$connect)选择链接的数据库。
3,mysql_query()('Set names gb2312');
$sql = "select * from blog_article";准备要查询的数据。
4,$datas = mysql_query($sql);执行sql查询。
5,$data = mysql_fetch_assoc($datas)得到查询到的缓存在内存中的一条数据。
6,print_r($data);
相同点:三个函数都是返回数据库中查询到的一行数据(说的再清楚点就是一条数据)。
不同点:mysql_fetch_assoc()用的是数据库中相应的字段名作为的key值(也就是数组下标)如:filed['id']=1;
mysql_fetch_row()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标)如:filed[0]=1;
mysql_fetch_array()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标),而且它还同时生成数据库中相应的字段名作为的key值(也就是数组下标)如:
filed[0]=1,filed['id']=1;也就是说,mysql_fetch_array()将mysql_fetch_assoc()和mysql_fetch_row()查询到的结果合为一体。
mysql_fetch_object()与mysql_fetch_assoc()差不多。
只是mysql_fetch_assoc()返回的是数组。mysql_fetch_object()返回的是object对象。
mysql_insert_id() 取得上一步 INSERT 操作产生的 ID。
mysql_result() 函数返回结果集中一个字段的值。
mysql_num_fields() 函数返回结果集中字段的数目。
mysql_affected_rows();返回前一次 MySQL 操作所影响的记录行数。
mysql_num_rows(mysql_query($sql))获得结果集中行的数目。
mysql_pconnect()() 函数打开一个到 MySQL 服务器的持久连接。
mysql_pconnect() 和 mysql_connect() 非常相似,主要区别:
1. 当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
2. 其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。
mysql_data_seek(mysql_query($sql),8);获得结果集中的第8条数据。
(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是mysql_unbuffered_query($sql)不缓存。mysql_query($sql)会缓存查询的结果。
mysql_close();关闭mysql的最近的链接。
mysql_field_flags(mysql_query($sql),6)返回第六个字段的表属性输出如:not_null 。
primary_key auto_increment 。
mysql_fetch_lengths(mysql_query($sql))返回该条数据的所有字段的每个字段的长度。返回的是一个数字组成的数组。
mysql_field_name(mysql_query($sql),3)返回第三个字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql)) 函数释放结果内存。
mysql_get_client_info() 函数返回 MySQL 客户端信息。
mysql_get_host_info() 取得 MySQL 主机信息。
一 、解析路径:
1,获得文件名:
basename();
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
例子:
<?php $path = "/home/httpd/html/index.php"; $file = basename($path,".php"); // $file is set to "index" ?>
2,得到目录部分:
dirname();
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
例子:
<?php $path = "/etc/passwd"; $file = dirname($path); // $file is set to "/etc" ?>
3,得到路径关联数组
pathinfo();
得到一个指定路径中的三个部分:目录名,基本名,扩展名。
例子:
<?php $pathinfo = pathinfo("www/test/index.html"); var_dump($pathinfo); // $path['dirname'] $path['basename'] $path['extenssion'] ?>
二、文件类型
1,filetype();
返回文件的类型。可能的值有 fifo,char,dir,block,link,file 和 unknown。
例子:
<?php echo filetype('/etc/passwd'); // file echo filetype('/etc/'); // dir ?>
三、得到给定文件有用信息数组(很有用)
1,fstat();
通过已打开的文件指针取得文件信息
获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。
例子:
<?php // 打开文件 $fp = fopen("/etc/passwd", "r"); // 取得统计信息 $fstat = fstat($fp); // 关闭文件 fclose($fp); // 只显示关联数组部分 print_r(array_slice($fstat, 13)); ?>
2,stat()
获取由 filename 指定的文件的统计信息(类比fstat())
四、计算大小
1,filesize()
返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。
例子:
<?php // 输出类似:somefile.txt: 1024 bytes $filename = 'somefile.txt'; echo $filename . ': ' . filesize($filename) . ' bytes'; ?>
2,disk_free_space()
获得目录所在磁盘分区的可用空间(字节单位)
例子:
<?php // $df 包含根目录下可用的字节数 $df = disk_free_space("/"); //在 Windows 下: disk_free_space("C:"); disk_free_space("D:"); ?>
3,disk_total_space()
返回一个目录的磁盘总大小
例子:(同上,换掉函数)
另外,如需要计算一个目录大小,可以编写一个递归函数来实现,例如:
<?php function dir_size($dir){ $dir_size = 0; if($dh = @opendir($dir)){ while(($filename = readdir($dh)) != false){ if($filename !='.' and $filename !='..'){ if(is_file($dir.'/'.$filename)){ $dir_size +=filesize($dir.'/'.$filename); }else if(is_dir($dir.'/'.$filename)){ $dir_size +=dir_size($dir.'/'.$filename); } } }#end while }# end opendir @closedir($dh); return $dir_size; } #end function ?>
五、 访问与修改时间
1. fileatime(): 最后访问时间
2. filectime(): 最后改变时间(任何数据的修改)
3. filemtime(): 最后修改时间(指仅是内容修改)