php自动执行脚本
1. php.exe 有什么用
php.exe 是 PHP 编程语言的一个核心执行文件,其主要用途包括以下几点:
1. 运行 PHP 脚本
- php.exe 可以直接执行 PHP 脚本文件,这些脚本通常用于网页开发、服务器端脚本编写以及命令行脚本等场景。
2. 命令行操作
- 在命令行界面中,开发者可以直接使用 php.exe 来执行 PHP 代码,进行一些无需网页界面的操作,提高了开发效率和灵活性。
3. 脚本自动化
- 通过 php.exe,开发者可以编写自动化脚本,用于自动化各种任务,如数据备份、日志处理、定时任务等,这有助于提升运维效率和准确性。
4. 测试和调试
- 在 PHP 开发过程中,php.exe 可以作为测试和调试工具,帮助开发者快速定位和修复代码中的问题。
5. 构建应用程序
- PHP 作为一种流行的服务器端脚本语言,广泛用于构建各种类型的网站和应用程序。php.exe 作为 PHP 的执行文件,在这些应用程序的构建和运行过程中发挥着关键作用。
6. 与数据库交互
- php.exe 可以执行与数据库相关的脚本,支持多种数据库如 MySQL、PostgreSQL、SQLite 等,使得 PHP 脚本能够轻松地进行数据存取和操作。
7. 与其他程序集成
- php.exe 还可以与其他程序和服务集成,如通过命令行接口与 linux 脚本或其他应用程序进行交互,实现跨平台的协同工作。
要使用 php.exe 执行 PHP 脚本,只需在命令行界面中输入相应的命令,如 php your_script.php,其中 your_script.php 是你要执行的 PHP 脚本文件名。
2. 如何使用Linux的Crontab执行PHP脚本
Linux中crontab是实现定时执行的指令,利用这个指令我们就可以定时执行某一个php文件,从而实现用PHP做Linux自动执行脚本。
如何用PHP作Linux自动执行脚本?
在安装PHP的时候,会产生一个可执行文件,文件名为php.将它 到 /usr/local/bin 下.在终端方式执行php程序:
php -q onlinnum.php
PHP 原本是应用在网页应用的﹐因此它会送出 HTML 的HEADER﹐但是在此我们是要将 PHP 用作 Shell Script﹐"-q" 就是表示不要送 出 HEADER 的意思.你可以试试看不加上 -q 的显示结果。此时你已经可以在终端方式下执行PHP 代码了。 linux命令:cron daemon
这是一个系统中常驻的服务,功能在于执行例行性的工作,如每天一次或每月一 次检查磁盘。cron daemon 会在每分钟检查一次排定的工作表(crontab),看看是否有要执行的指令,所有的输出会以mail寄给用户。
设置 crontab
命令:crontab -e
该命令呼叫vi编辑器来编辑执行的清单。例如
0 0 1,15 * * fsck /home
1 * * * * /home/myhome/printhello
每一行代表一项排定的工作,在指令前为排定的时间,总共有5个栏位,以空格间隔,由左到右依序如下:
--------------------------
分钟 从00到 99
点钟 从0到 24
日 从01到31
月 从01到12
星期 从01到07,代表星期一到星期日
*号表示"每" ,如每天执行,就在第三栏填*号
--------------------------
所以上例的两项工作是:
每月1号和15号检查/home 磁盘
每小时的第一分执行 /home/myhome/printhello 这个文件
查看crontab:crontab -l
删除crontab:crontab -r
我们就知道该怎么利用PHP和crontab命令作Linux自动执行脚本了。
还需要注意什么问题?
如果php中有使用数据库,如oracle等,执行脚本中还需export Oracle的环境设置。因为cron下的脚本执行的用户都是在没登陆状态下执行的,少了很多系统里设置的环境变量的值,在连接数据库的时候会出问题。
3. PHP CLI模式开发详解
PHP CLI模式开发详解:
PHP CLI模式是一种无需Web服务器的运行方式,适用于脚本自动化、命令行工具开发等多种场合。以下是PHP CLI模式开发的详细解析:
运行方式:
- 使用脚本路径调用PHP CLI解释器:
- 通过命令行指定PHP文件的路径来运行脚本,如php /path/to/yourFile.php。
- 此方法需要明确知道PHP解释器的安装位置。
- 为文件设置可执行权限:
- 在UNIX/Linux环境中,使用chmod +x命令将PHP文件设置为可执行。
- 在脚本头部添加#! /usr/bin/php声明,然后可以直接在命令行执行该脚本。
- 使用脚本路径调用PHP CLI解释器:
命令行参数处理:
- 在CLI模式下,可以通过$_SERVER['argv']和$_SERVER['argc']全局变量来获取命令行参数。
- $_SERVER['argv']是一个数组,包含传递给脚本的参数列表。
- $_SERVER['argc']是一个整数,表示传递给脚本的参数个数。
输入输出处理:
- CLI模式遵循UNIX系统设计,使用STDIN、STDOUT和STDERR三个文件句柄进行输入输出。
- STDIN用于接收用户输入。
- STDOUT用于向屏幕输出信息,也可以重定向到文件。
- STDERR用于输出错误信息,同样可以重定向。
后台运行与日志记录:
- 使用nohup命令可以在后台运行CLI脚本,即使退出当前会话,脚本也会持续运行。
- 通过将脚本输出重定向到文件,可以保存脚本的执行结果。
- 使用tail命令可以实时查看日志文件的内容。
应用场景示例:
- 可以编写一个持续生成静态HTML文件的脚本,如cliPHP3.php,利用CLI模式的强大功能实现自动化生成和更新网页内容。
学习资源:
- 更多关于PHP CLI模式开发的知识和资源,可以通过关注公众号“PHP开源社区”或访问相关链接获取。这些资源包括进阶文档、架构视频、精彩文章等,有助于深入了解和掌握PHP CLI模式的开发技巧。
4. 如何使用Linux的Crontab定时执行PHP脚本的方法
写好要执行的PHP文件
然后使用Crontab 对应的时间格式等进行执行即可
linux crontab&每隔10秒执行一次 linux下定时执行任务的方法
=============CRONTAB执行PHP文件============
原理:Crontab sleep结合实现每N秒执行文件,延时方法 sleep N
注意:
60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。
如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。
在LINUX中你应该先输入crontab -e,
然后就会有个vi编辑界面,
再输入0 3 * * 1 /clearigame2内容到里面
:wq 保存退出。
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。
cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
一、cron在3个地方查找配置文件:
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。
一般一个用户最多只有一个crontab文件。
二、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
三、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
四、权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要执行的脚本)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
基本格式 :
*****command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
#每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
很多时候,我们计划任务需要精确到秒来执行,根据以下方法,可以很容易地以秒执行任务。
以下方法将每10秒执行一次#执行PHP文件
# crontab -e
* * * * * php /www/web/test.php
* * * * * sleep 10; php /www/web/test.php
* * * * * sleep 20; php /www/web/test.php
* * * * * sleep 30; php /www/web/test.php
* * * * * sleep 40; php /www/web/test.php
* * * * * sleep 50; php /www/web/test.php
每5秒执行一次
* * * * * for i in `seq 120`; do awesome_scripts& sleep 0.5; done
===================执行脚本==================
原理:每分钟执行脚本,使用for语句循环实现每N秒执行文件
注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。
1.vim crontab1.sh
#!/bin/bash
step=2 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/www/web/test.php')
sleep $step
done
exit 0
2.crontab -e 执行脚本 每分钟执行
# m h dom mon dow command
* * * * * /home/php/crontab/crontab.sh
每7分钟执行一次,60*7 = 420,则循环的时候循环最大是420;则 crontab.sh step的值为7,循环结束条件i < 420, crontab -e可以输入以下语句来实现
# m h dom mon dow command
*/7 * * * * /home/php/crontab/crontab.sh