关于“php_popen函数”的问题,小编就整理了【4】个相关介绍“php_popen函数”的解答:
php用什么办法实现异步任务?php实现异步任务的方法:
通用的异步执行文件 exec.phpsleep(8);
$data = "--- type " . date("Y-m-d H:i:s") . " ---\n";
file_put_contents("../log.txt", $data, FILE_APPEND);
popen
通过 popen() 函数打开进程文件指针,从而能异步执行脚本文件。(只在linux下有效)pclose(popen("php exec.php &", 'r'));
echo 1;
php popen和system有什么区别?popen和system都可以执行外部命令。 popen相当于是先创建一个管道,fork,关闭管道的一端,执行exec,返回一个标准的io文件指针。 system相当于是先后调用了fork, exec,waitpid来执行外部命令 popen本身是不阻塞的,要通过标准io的读取使它阻塞 system本身就是阻塞的。 最近写的程序,要求进程在调用的外部命令运行完毕之后,再继续 向下进行。 一开始调用的popen,然后只是用了fgetc,使其阻塞,但是总是阻塞不了。原因就是如果外部命令有很多的输出内容,那fgets在得到输出的第一个字符的时候就返回了,不在阻塞了;调用fread,如果size和nitems设置的不够大,也是一样的问题。比如外部命令要输出100个字符,结果size是sizeof(char),nitems是10,那么当fread读到地10个字符的时候,就已经满足条件了,就返回了。 正确的方法是调用system,因为system最后会调用waitpid,来等待子进程运行完毕。
万网的Unix主机Php屏蔽了哪些函数?为了系统的安全性,万网的UNIX主机PHP屏蔽了以下函数: system,phpinfo,passthru,popen,exec
php安全模式影响哪些函数?开启safe_mode之后对php系统函数的影响:
safe_mode即为PHP的安全模式,在php.ini中设置safe_mode = On重启PHP便可开启安全模式。
当安全模式开启后,PHP相应的一些系统函数,文件操作函数等将会受限。例如:
ckdir,
move_uploaded_file,
chgrp,
parse_ini_file,
chown,rmdir,
copy,
rename,
fopen,
require,
highlight_file,
show_source,
include,
symlink,
link,
touch,
mkdir,
unlink,
exec,
shell_exec,
pasathru,
system,
popen
除此之外,一些php扩展的函数也会受到限制,不能在程序里面直接加载扩展,只能到php.ini里加载,而且php如果需要执行操作系统的程序时,必须在safe_mode_exec_dir中指定程序的路径,否则执行将失败。
到此,以上就是小编对于“php_popen函数”的问题就介绍到这了,希望介绍关于“php_popen函数”的【4】点解答对大家有用。