如何通过命令将parameter passing给linux

我需要稍后运行一个mail.php文件,而不是让用户在提交register.php时等待validation电子邮件发送。

所以我select使用at命令在1分钟后在命令行中运行mail.php( 在register.php调用 ):

但是我只能在at命令的交互模式下发送参数给那个php文件。

at now + 1 minute at> php mail.php {email} # {email} is the argument I want to pass 

因为我想这是自动的,所以我需要使用运行一个shell脚本:

 at -f mail.sh 

但我找不到通过{email}参数的正确方法,

我试图在壳牌中设定一个可变的环境,但也徒劳无功:

register.php文件中,我写道:

 shell_exec('export email=foo@bar.com'); shell_exec('at -f mail.sh now + 1 minute'); 

mail.sh中 ,我写道:

 #! /bin/bash php mail.php $email 

Solutions Collecting From Web of "如何通过命令将parameter passing给linux"

您可以从stdin而不是从文件读取命令。 (bash的)here-doc语法在这里很好用:

 shell_exec('at now + 1 minute <<EOF php mail.php test@test.com EOF '); 

你可以使用这个:

 shell_exec('echo php mail.php test@test.com | at now + 1 minute'); 

在一个去: shell_exec('export email=foo@bar.com; at -f mail.sh now + 1 minute');

或者只是: shell_exec('php mail.php foo@bar.com');

1)对于Linux。 检查文件

/etc/at.deny

如果存在,则删除用户“www-data”。

2)安排简单的命令与PHP。

Linux的

 exec('echo "mkdir /tmp/testAT" | at now + 1 minute'); 

视窗

 exec('at "16:45:01 20.09.2017" cmd /c mkdir C:\server\_debug\1\testAT'); 

3)计划Symfony框架命令。

 exec('echo "php /var/www/mysite.com/app/console system:test_command param1 param2 --env=test" | at 11:14 AM 19.09.17');