php运行函数,php中shell_exec不能运行?

用户投稿 107 0

关于“php_运行函数”的问题,小编就整理了【3】个相关介绍“php_运行函数”的解答:

php中shell_exec不能运行?

其实,你这里真是的需求,只是希望在Web这边获取一种方式,来执行一个长达数小时的“异步”任务。

就PHP而言,可以用2种方式来做:

(1)在PHP里使用shell_exec的函数,以shell的方式,启动一个独立的PHP脚本执行。

这种方式,其实相当于在Web服务器处理过程中,独立起了一个shell进程处理你的任务。

这里,需要特别注意的是shell_exec的服务器安全,注意校验参数,小心避免被带入shell命令中。

这个是比较容易实现的方式。

(2)使用PHP实现一个Server,监听一个端口,为Web端提供服务。这里的实现方式有很多,通常要配合扩展,例如原生的pthread(多线程),开源扩展swoole等等。

直接在web程序里使用多线程,是不恰当的,web请求通常有时间限制,例如timeout默认是30秒。你如何保证,在线程任务执行完之前,它的父进程仍然在工作?

php程序运行过程?

1.我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;

2.PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

3.PHP总共有三个模块:内核、Zend引擎、以及扩展层;

4.PHP内核用来处理请求、文件流、错误处理等相关操作;

5.Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

6.扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。

比如,我们需要mysql扩展来连接MySQL数据库;

7.当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;

8.最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

在PHP中如何正确创建函数?

tep 1 =>

php的扩展模块都放在 ext/ 目录下,比如说 snmp模块、mysql模块。 我们要建立自己的模块,就要在ext目录下为自己的模块建一个目录。比如,我们要做一个分析config文件的模块,命名为pconfig模块(parse config的简写),需在ext下建立目录pconfig。将我写好的7个文件copy到该目录下,另外需对主目录下的configure和internal_functions.c作一些修改。

Step 2 =>

Makefile.am Makefile.in

是模板文件,用户执行configure时,会调用这两个文件,生成编译时所用的Makefile文件。修改时将小写的pconfig换成你自己的模块名,别忘了把大写的PCONFIG也替换掉(不要告诉我你不会vi的替换语句)。config.m4也是执行configure将会调用的检测脚本程序,以后我们来讨论这些脚本程序的更深入的修改。现在你只需要把pconfig该成你的模块就可以了。对config.h.stub和setup.stub也如法炮制。其实setup.stub也没什么用。

Step 3 =>

到此,以上就是小编对于“php_运行函数”的问题就介绍到这了,希望介绍关于“php_运行函数”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!