老大要我实现一个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,有毛病多多包涵,请大家多多指教,==
$parm1 = "*";
$parm2 = " -l";
$handler = popen ("/bin/ls ".$parm1.$parm2,"r");
$read = fread($handler,2048);
echo $read;
?>
这个等同运行命令:ls * -l ,所以,参数直接作为字符串传参给popen就好了。
比如变量$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));