标题:如何让php自动运行?全解 出处:沧海一粟 时间:Mon, 04 Feb 2008 09:09:44 +0000 作者:jed 地址:http://www.dzhope.com/post/371/ 内容: Discuz后台有个计划任务,可以使php自动运行。 DZ计划任务的机制是这样: 1.首先在到了触发计划任务的时间,有访问(会员,游客,搜索引擎的蜘蛛)然后触发该计划任务发生。(因为PHP是触发是语言,没有人去访问他,他什么也做不了。) 2. 计划任务执行. 3. 执行成功,返回执行成功的信息,更新到数据库中记录当前执行的时间,下一次需要执行的时间。 目前让php自动运行的的方法有以下几种方法: 1:在windows下用计划任务   在linux下用crantab 缺点:必须具有服务器权限 2:用个某个网页隔一段时间去刷新,比如用js或者php程序来实现。   缺点:必须用某个工具将该页开着。 3:在有用户访问的时候触发 缺点:必须在用户访问的页面里包含触发程序。 用crontab定时执行 在linux,有多种方式可以实现定时运行,使用最灵活的应该是crontab, 在使用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. Generated by Bo-blog 2.1.1 Release