用php程序作为linux自动执行脚本

用PHP作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为 shell script直接在服务器上运行. 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户login或者某一个页面中, 以便在用户登录或访问到该时,触发运行该代码. 这样一来, 会造成一个问题, 如果该代码教复杂, 明显减慢该页的正常调用速度.利用PHP 的这种特性,加上Linux的crontab指令,即可自动定时执行某一个php文件(统计在线人数等).

具体方法:

在安装PHP的时候,会产生一个可执行文件,文件名为php.将它 copy 到 /usr/local/bin 下.

在终端方式执行php程序: php -q onlinnum.php<Enter>

注意到 PHP 原本是应用在网页应用的﹐因此它内定会送出 HTML 的 HEADER﹐但 是在此我们是要将 PHP 用作 Shell Script﹐"-q" 就是表示不要送 出HEADER 的意思.你可以试试看不加上 -q 的显示结果。

此时你已经可以在终端方式下执行PHP 代码了. 呵呵,可以试试执行你以前写的

代码.

linux命令:cron daemon

这是一个系统中常驻的服务,功能在于执行例行性的工作,如每天一次或每月一次检查磁盘。cron daemon 会在每分钟检查一次排定的工作表(crontab),看看是否有要执行的指令,所有的输出会以mail寄给用户。

设置 crontab

命令:crontab -e<Enter>

该命令呼叫vi编辑器来编辑执行的清单。例如

&nbs p; 0 0 1,15 * * fsck /home

&nbs p; 1 * * * * /home/Gull/onlinnumber

每一行代表一项排定的工作,在指令前为排定的时间,总共有5个栏位,以空格间隔,由左到右依序如下:

栏位 &nbs p; 说明

---------------------- ----

分钟 从00到 99

点钟 从0到 24

日 &nbs p;从01到31

月 &nbs p;从01到12

星期 从01到07, 代表星期一到星期日

*号表示"每" ,如每天执行,就在第三栏填 *号

所以上例的两项工作是:

每月1号和15号检查/home 磁盘

每小时的第一分执行 /home/Gull/onlinnumber 这个文件

查看crontab:crontab -l<Enter>

删除crontab:crontab -r<Enter>

呵呵,到这里,你应该知道该怎么利用PHP和crontab命令来统计在线人数了吧?

需要注意:

如果php中有使用数据库,如oracle等,执行脚本中还需export Oracle的环境设置。因为cron下的脚本执行的用户都是在没登陆状态下执行的,少了很多系统里设置的环境变量的值,在连接数据库的时候会出问

时间: 2024-11-02 14:29:29

用php程序作为linux自动执行脚本的相关文章

使用php作linux自动执行脚本(呵呵,超级好用的功能)

最近在用PHP作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为shell script直接在服务器上运行. 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户login或者某一个页面中, 以便在用户登录或访问到该时,触发运行该代码. 这样一来, 会造成一个问题, 如果该代码教复杂, 明显减慢该页的正常调用速度. 利用PHP 的这种特性,加上linux的crontab指令,即可自动定时执行某一个php文件(统计在线人数等).具体方法:在安装PHP的时候,会产

在linux中执行脚本

Linux执行脚本号令时前面加[点][空格[点][斜杠](. ./) 进入/root/CiscoIOU目录下,然后执行 . ./start.sh 备注: 第一个[点][空格](. )默示把后面的执行结果(如景象变量设置)导入到当前文件. 第二个[点][斜杠](./),就是执行当前目录(在当前文件所设置的PWD中)里的文件. 一般执行均为./ 的形式

linux 自动定时备份文件夹及备份脚本实例

服务器:阿里云 需求:对www目录,每天凌晨1点执行备份,以当天日期命名文件夹 在 alidata 文件夹里建立 wwwbak 目录 和 bakwww.sh 文件,操作如下: 新建 wwwbak 文件夹,执行如下命令:  # mkdir wwwbak# chmod -R 777 wwwbak 再新建 bakwww.sh 的文件,执行如下命令 # vi bakwww.sh 文件内容如下:cp -af /alidata/www/ /alidata/wwwbak/$(date -d "today&qu

Linux/Unix shell 脚本跨服务器跨实例执行SQL

      在DB运维的过程中,难免碰到需要跨多个服务器以及多个Oracle实例查询数据库的情形.比如我们需要查看当前所有生产环境数据库上open_cursor参数的值以便考虑是否需要增加.而需要查看的数据库服务器上有多个实例,同时又存在多个数据库服务器,这样子下来,几十个DB,上百个的情形一个个查,那得把人给累死.那就像点办法撒,写个shell脚本,轮巡所有服务器及服务器上的所有实例.见本文的描述.      关于shell脚本中如何调用SQL,可以参考下列链接:           Linu

让你的程序也能执行脚本

VBScript(JScript)是应用广泛,简单易学的脚本语言.使用VBScript(JScript)调用COM组件则更是容易.那么,如果在你的程序中也能够执行脚本,则在简化程序设计的基础上,还会极大地提升软件的功能.为了方便大家使用这个功能,我写了一个具有自动化(Automation/IDispatch)功能的EXE包装程序来代理调用脚本执行.这个包装程序接口只有2个函数,说明如下: Void SetScriptLanguage(long nLanguage); 功能:设置使用脚本语言的类型

C# SharpSSH 远程 Linux 执行脚本

问题描述 通过开源SharpSSH项目远程连接,Linux后执行脚本有个问题,声明的变量会不存在,每次执行的命令都是重新发送的有大神遇到吗 解决方案

如何利用程序自动执行ftp上传下载操作?

问题描述 如何利用程序自动执行ftp上传下载操作? 最近工作中反复要用ftp工具,对某些固定的文件做下载,修改,再上传的操作,觉得很麻烦.想 编一个程序,可以自动执行ftp链接,对于某个设置好的路径和文件进行上传下载,想请教大家实现的方法,比如可以调用哪些API之类的?非常感谢 解决方案 可以使用perl,python等语言完成. python可以使用ftplib. import ftplib session = ftplib.FTP('xxx.xxx.xxx.xxx','username','

如何在Linux启动时自动执行命令或脚本

我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟.当你注销或者关机时,也是这样. 更有意思的是,在系统启动以及用户登录或注销时,还可以让系统执行特定的操作. 本文,我们将探讨一下在 Linux 操作系统中实现这些目标的传统方法. 注意:我们假定使用的是 Bash 作为登录及注销的主 Shell.如果你使用的是其他 Shell,那么有些方法可能会无效.如果有其他的疑问

如何在 Linux 启动时自动执行命令或脚本

在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令.这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径. 然而,这种方法需要注意两点: a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时 b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细