php - popen函数调本地脚本并传参数
高洛峰
高洛峰 2017-04-11 09:45:56
0
2
315

老大要我实现一个php异步发邮件的功能,上网找了资料发现用popen就可以,于是初步写成这样:

pclose(popen("php -f mymail.php","r"));

这个脚本里就是一个用phpmailer发送一封邮件给我的账号。
现在想给这个功能传参数:
$to--收件人
$content--内容
$subject--标题。
这些是一个发邮件的功能必不可少的,
但是不知道要怎么写?
是在这条指令后加参数?如下,==可能这个靠谱点

php -f mymail.php -a $argv1 -b $argv2

还是有一个可以传参数的东西?(但是看popen这个函数4个参数都不是啊)

popen("balabala","r",$参数,$参数)

还是说强行写进去,然后直接用?类似下面这个意思

fopen("mymail.php","w"); fwrite $to balabala; fwrite $subject balabala; fclose(fopen(balabala));

初学php,有毛病多多包涵,请大家多多指教,==

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all (2)
黄舟

$parm1 = "*";
$parm2 = " -l";
$handler = popen ("/bin/ls ".$parm1.$parm2,"r");
$read = fread($handler,2048);
echo $read;
?>

这个等同运行命令:ls * -l ,所以,参数直接作为字符串传参给popen就好了。

    洪涛
    pclose(popen("php /path/to/task.php '$arg1' '$arg2' '$arg3' >/dev/null 2>&1 &", 'r'));

    比如变量$arg1是传递给脚本task.php的参数,task.php里通过$argv[1]拿到这个参数$arg1.

    字符串参数$arg可以用单引号括起来,可以避免一些空格的影响,但还是有缺陷.
    字符串参数最好还是serialize序列化到文件,
    然后给脚本task.php传文件路径这个参数,
    让task.php自己读文件unserialize反序列化拿数据.
    文件名应该做到唯一,比如可以是用户ID+进程PID+时间随机数:
    $filename = md5(uniqid('mail_'.$uid.'_'.getmypid().'_'.mt_rand(), true));

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!