首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php中popen,exec,system,passthru区别

第二个参数是可选的,用来得到命令执行后的状态码。...exec() 原型:string exec (string command [, string array [, int return_var]]) exec() 函数与system()类似,也执行给定的命令...虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。...所以passthru()函数经常用来调用象pbmplus(Unix 下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。...在PHP3中,对这种句柄只能做单一的操作模式,要么写,要么读;从PHP4开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用pclose()函数来关闭它。

66320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php执行系统外部命令函数:exec()、passthru()、system()、 shell_exec()

    php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec() 先检查配置文件php.ini中是否有禁止这是个函数。...执行系统外部命令时不会输出结果,而是返回结果的最后一行,如果你想得到结果你可以使用第二个参数,让其输出到指定的数组,此数组一个记录代表输出的一行,即如果输出结果有20行,则这个数组就有20条记录,所以如果你需要反复输出调用不同系统外部命令的结果...,passthru直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,不返回任何值,且其可以输出二进制,比如图像数据。...方法四:间隔符号 ` 和shell_exec() shell_exec ( string $cmd ) : string 注:shell_exec() 函数实际上仅是间隔符号 `  操作符的变体。...php header("Content-type:text/html;charset=gb2312"); /** * exec() */ echo " "; $content1 = exec(

    1.1K31

    PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()

    php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。...默认php.ini配置文件中是不禁止你调用执行外部命令的函数的。...> 执行结果: test.php Array( [0] => index.php [1] => test.php) 知识点: exec 执行系统外部命令时不会输出结果,而是返回结果的最后一行,如果你想得到结果你可以使用第二个参数...> 执行结果: index.phptest.php 知识点: passthru与system的区别,passthru直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,不返回任何值...的区别在于system在执行系统外部命令时,直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,如果执行命令成功则返回true,否则返回false。

    1.4K20

    php使用curl_multi_exec并行同时执行http请求

    当php代码要对外请求多个接口的时候 , 可以使用下面的方式并行执行多个请求 主要是使用curl_multi_exec函数实现 代码中请求的test.php文件 , 是sleep(10)秒 如果按传统的逐行执行的方式..., 请求两次这个接口代码会阻塞20秒的时间 , 现在使用同时并行执行的方式,代码只会阻塞10秒 并且请求也是会同时到达对方接口的 php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL...($mh,$ch1); curl_multi_add_handle($mh,$ch2); $active = null; // 执行批处理句柄 do { $mrc = curl_multi_exec...= -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM

    2K20

    SQL中exec和call的使用

    今天在读取数据库的时候,搞了一上午,遇到个坑,归根结底还是术业不精! 由于对执行命令 CALL和EXEC的无知,数据库的无知,以前学过,忘记了。 还得加强学习啊。...从开发小姐姐那儿得到的是这么一句SQL语句(开发代码里面的如下): String spSQL = "{call DB***..balabalaTable}"; 是在之前我想开发要的时候给我的是这么个语句...: exec DB***..balabalaTable 能是开发好心的将call改成了exec,为了方便我在数据库中直接查询, 怕我不知道。...} 就一句话: exec是sqlplus的命令,只能在sqlplus(查了下 应该是 客户端操作)中使用; call是sql命令,任何工具都可以使用,call必须有括号,即使没有参数。...sql="{call DB***}";sql语句需要{} //正常的查询语句String sql = "SELECT ****"; //java.sql.Statement stmt = dbConn.createStatement

    2.9K80

    sqlite3_exec函数的使用

    sqlite3_exec函数的使用 sqlite3数据库是一个小型的关系型的数据库,以文件的方式存在,打开文件即是打开数据库,它小巧且功能强大,在嵌入式领域内使用很广.现在就介绍一下其中一个重要函数的使用...:执行sql语句 参数: db:数据库句柄 sql:sql语句 callback:回调函数,每成功执行一次sql语句就执行一次callback函数 void *:给回调函数传的参数 errmsg:错误信息.../************************************************** * 文件名称:main.c * 文件描述:测试sqlite3的sqlite3_exec函数的回调函数...的回调函数 * 函数参数:void *param 传递给callback回调函数的参数 对应于sqlite3_exec函数的第四个参数 int f_num 查找到的记录中包含的字段数目 char...的回调函数 * 函数参数:void *param 传递给callback回调函数的参数 对应于sqlite3_exec函数的第四个参数 int f_num 查找到的记录中包含的字段数目 char

    3.3K10

    Python的exec

    参考链接: Python中的命名空间和范围 目录  exec()简单使用  动态执行简单的字符串代码  动态执行较复杂的代码  执行文件中的Python代码  在exec中传参  ​  使用中遇到的问题...  参考  exec()简单使用  个人比较喜欢用Python里面的exec(),可以用来动态执行字符串代码,在for循环里面能快速执行大量类似于list1= 1,list2=2,list3=3..这样的语句..., {'x': 1, 'y': 2}, {'y': 3, 'z': 4}) func()  使用中遇到的问题  今天在使用时遇到了一些问题简单记录一下。 ..., 39, 40]         loc = locals()         for suffix in port_suffix:             # 通过执行字符串代码来避免反复执行相同语句...好,在此基础上我们来回顾今天遇到的问题,首先简化出现如上问题的业务代码为下图示例3的exec+locals+占位符的example3的使用方式,然后利用example4的方式来做一个简单的验证。

    78920

    php使用singal为什么需要使用declare(ticks=n)语句?

    既然系统内核都提供了完整的signal的机制,第一想到的是,pcntl拓展要实现php的signal-api, 其直接将php方法与底层的singnal函数绑定就能实现了,不是吗?...但是对于PHP这样的脚本语言,一个语句底下可能是n句c语言执行,或者n+m句机器指令,如果在一条语句的执行过程中运行php的signal函数,那么很可能引起php的奔溃; 那么pcntl拓展怎么解决这个问题了...,自然就会想到,如果信号来了先做标记,再等一句完整的php语句执行完了,然后再调用使用pcntl_signal注册的php回调函数,这样就保证了php环境的安全性。...而php中declare(ticks=n)和register_tick_function(‘handel_function’)就提供了这样的功能; 为了保证php环境的安全性和稳定性,所以pcntl拓展在实现...signal上使用了“延后执行”的机制;因此使用该功能时,必须先使用语句declare(ticks=1),否则注册的singal-handel就不会执行了

    33920

    本地php环境不支持curl_exec的解决办法

    在测试安装某源码时,安装程序检测到本地php环境不支持curl_exec 我果断进行了一阵搜索后,东拼西凑找到了一些php环境不支持curl_exec的解决办法,通过自己实际操作解决了这个问题。...以下是自己操作后总结的方法: 1.在C盘的windows目录下找到PHP.INI配置文件,使用PHP编辑器打开,找到extension_dir = “../”,改为自己php安装目录下ext目录的绝对路径...,如:extension_dir = “C:/AppServ/php5/ext”。...2.在PHP.INI配置文件中找到extension=php_curl.dll这一行,去掉前边的分号“;”。  保存并关闭php.ini文件。...3.把php5/libeay32.dll, php5/ssleay32.dll, php5/php5ts.dll, php5/ext/php_curl.dll这4个文件拷贝到windows/system32

    96810

    PHP流程控制语句

    PHP流程控制语句 PHP流程控制语句有3中类型 条件判断语句 循环语句 程序跳转和终止语句 1.条件判断语句 if语句 基本语法: if(表达式) 语句块; if(表达式){ 语句块1;...默认语句块; } case语句要和break语句配合使用,因为switch即使遇到了适合的匹配条件也不会自动跳出循环,要使用break手动跳出 2.循环语句 while语句 基本语法: while...for循环语句 基本语法: for(初始值;循环条件;步长值){ 循环体; } foreach循环语句 foreach语句是专门用来进行数组遍历的 基本语法: foreach(array as...基本语法: break n; //n为跳出循环的数量,默认为1 continue语句 break语句用于跳出本次循环,执行下次循环,也可以指定跳出几层循环,默认跳出一层循环 基本语法: continue...n; //n为跳出循环的层数

    1.1K40

    Find exec的用法

    {} 花括号代表前面find查找出来的文件名。 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。...在有些操作系统中只允许-exec选项执行诸如ls或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。...为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。...当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。...实例4:-exec中使用grep命令 命令:find /etc -name "passwd*" -exec grep "root" {} \; 说明:任何形式的命令都可以在-exec选项中使用。

    1.3K30

    本地php环境不支持curl_exec的解决办法

    在测试安装某源码时,安装程序检测到本地php环境不支持curl_exec 我果断进行了一阵搜索后,东拼西凑找到了一些php环境不支持curl_exec的解决办法,通过自己实际操作解决了这个问题。...以下是自己操作后总结的方法: 1.在C盘的windows目录下找到PHP.INI配置文件,使用PHP编辑器打开,找到extension_dir = “../”,改为自己php安装目录下ext目录的绝对路径...,如:extension_dir = “C:/AppServ/php5/ext”。...2.在PHP.INI配置文件中找到extension=php_curl.dll这一行,去掉前边的分号“;”。  保存并关闭php.ini文件。...3.把php5/libeay32.dll, php5/ssleay32.dll, php5/php5ts.dll, php5/ext/php_curl.dll这4个文件拷贝到windows/system32

    764100
    领券