很多站长朋友们都不太清楚php执行主函数,今天小编就来给大家整理php执行主函数,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP如何持续执行一个函数? 2、 PHP执行linux系统命令的常用函数使用说明 3、 如何单击按钮执行PHP的函数 4、 php中点击一个按钮,执行一个内置函数 5、 php主函数怎么定义和应用 PHP如何持续执行一个函数?PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array $output [, int $return_var ]] )
说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时清空这个数组unset($output),以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int $return_var ] )
说明: system和exec的区别在于,system在执行系统外部命令时,直接将结果输出到游览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。
<?php
system("pwd");
?>
3)passthru()
原型: void passthru ( string $command [, int $return_var ] )
说明: passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec(string $cmd)
说明: 直接执行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
防超时的处理方法:
当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显著提高程序执行的效率。
如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运行。但在默认情况下,
象system()等函数要等到这个命令运行完才返回(实际上是在等命令的输出结果),
这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中,如:
<?php
system("/usr/local/bin/order_proc > /tmp/abc ");
?>
<?
$filename=time().".data";
exec("/app/gm/gm_center/test/hello.py > $filename",$output);
var_dump ($output);
?>
PHP执行linux系统命令的常用函数使用说明system函数
说明:执行外部程序并显示输出资料。
语法:string
system(string
command,
int
[return_var]);
返回值:
字符串
详细介绍:
本函数就像是
C
语中的函数
system(),用来执行指令,并输出结果。若是
return_var
参数存在,则执行
command
之后的状态会填入
return_var
中。同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用
EscapeShellCmd()。若
PHP
以模块式的执行,本函数会在每一行输出后自动更新
Web
服务器的输出缓冲暂存区。若需要完整的返回字符串,且不想经过不必要的其它中间的输出界面,可以使用
PassThru()。
实例代码:
复制代码
代码如下:
<
?php
$last_line
=
system('ls',
$retval);
echo
'Last
line
of
the
output:
'
.
$last_line;
echo
'<hr
/>Return
value:
'
.
$retval;
?>
exec函数
说明:执行外部程序。
语法:string
exec(string
command,
string
[array],
int
[return_var]);
返回值:
字符串
详细介绍:
本函数执行输入
command
的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用
PassThru()
这个函数。
要是参数
array
存在,command
会将
array
加到参数中执行,若不欲
array
被处理,可以在执行
exec()
之前呼叫
unset()。若是
return_var
跟
array
二个参数都存在,则执行
command
之后的状态会填入
return_var
中。
值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用
EscapeShellCmd()。
实例代码:
复制代码
代码如下:
<
?php
echo
exec('whoami');
?>
popen函数
说明:打开文件。
语法:int
popen(string
command,
string
mode);
返回值:
整数
详细介绍:
本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的
(只能读或只能写),而且一定要用
pclose()
关闭。在文件操作上可使用
fgets()、fgetss()
与
fputs()。若是开档发生错误,返回
false
值。
实例代码:
复制代码
代码如下:
<
?
$fp
=
popen("/bin/ls","r"
);
?>
PHP监控linux服务器负载
在实际项目的应用中,我们由于各种条件的现实,利用PHP来实现服务器负载监控将是一种更为灵活的方式。
由于Web
Server以及PHP的实现方式所限,我们在现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此,我从网上找到另外一种方式来绕开这个限制。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序。
c程序
首先写个c文件,比如/usr/local/ismole/w.c
复制代码
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<systypes.h>
#include<unistd.h>
int
main()
{
uid_t
uid
,euid;
//note
获得当前的uid
uid
=
getuid();
//note
获得当前euid
euid
=
geteuid();
//note
交换这两个id
if(setreuid(euid,
uid))
perror("setreuid");
//note
执行将要执行linux系统命令
system("/usr/bin/w");
return0;
}
编译该文件gcc
-o
w
-Wall
w.c,这时会在当前目录下生成程序w。改变此程序的属主chmod
u+s
./w。
PHP执行
文件内容如下,放在web目录下,访问就会输出当前的服务器负载情况。
复制代码
代码如下:
<?php
/*
More
Original
PHP
Framwork
Copyright
(c)
2007
-
2008
IsMole
Inc.
$Id:
serverMonitor.php
408
2008-12-02
08:07:40Z
kimi
$
*/
//note
key的验证过程
if($key
!=
$authkey)
{
//
exit('key
error);
}
$last_line
=
exec('/usr/local/ismole/w',
$retval);
$returnArray
=
explode("load
average:
",
$retval[0]);
$returnString
=
$returnArray[1];
echo
$returnString;
按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控,备份,恢复,日常维护等等。
如何单击按钮执行PHP的函数进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl
执行phpize生成编译文件,phpize在PHP安装目录的bin目录下
/usr/local/php5/bin/phpize
运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,
这里会报错,可以根据错误信息去排查!
php中点击一个按钮,执行一个内置函数<!--?
ignore_user_abort();
//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);
//
执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*5;
//
每隔5分钟运行
do{
$fp
= fopen("test.txt","a");
fwrite($fp,"rn".date('Y-m-d
H:i:s',time())."rn");
fclose($fp);
sleep($interval);
//
按设置的时间等待5分钟循环执行
}while(true);
echo
'ok';
?-->
php主函数怎么定义和应用可以在公共的地方定义:
function test($name){
echo $name;
}
调用:test('123');
关于php执行主函数的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php执行主函数 php代码执行函数的详细内容...