我有以下PHP代码行,效果很好:
exec('wget http://www.mydomain.com/u1.php> / dev / null&');
u1.php用于在我的服务器上执行各种类型的维护,上面的命令使它在后台运行。没问题。
但是我需要在执行之前将变量数据传递给u1.php。我想优先传递POST数据,但如果POST不是一个选项,则可以容纳GET或SESSION数据。基本上,传递的数据类型是特定于用户的,具体取决于登录到站点的用户并触发上述代码。我已经尝试将GET数据添加到URL的末尾,但这不起作用。
那么我怎样才能将数据发送到u1.php?首选POST数据,SESSION数据也可以正常工作(但我尝试了这个并且它没有获取登录用户的会话数据)。 GET将是最后的选择。
谢谢!
答案 0 :(得分:2)
按照您的方式执行此操作,可能使用http_build_query
exec("wget --post-data 'a=b&c=d' http://www.mydomain.com/u1.php > /dev/null &");
但是,我很想知道你为什么选择在cURL上使用wget,或者如果文件在同一台服务器上,则直接调用它。使用wget似乎有点笨拙。
答案 1 :(得分:1)
为什么不使用cURL(如果它是一个选项)?您可以非常轻松地传递POST数据。
curl -d "your=postdata&more=postdata" http://www.mydomain.com/u1.php
答案 2 :(得分:0)
为什么不直接使用cURL实现?
$c = curl_init('http://www.mydomain.com/u1.php');
curl_setopt($c, CURL_POSTFIELDS, $post_data);
curl_exec($c);
编辑:要提交$post_data
,您需要构建一个类似GET查询字符串的字符串:
$vData = array(
'foo' => 'bar',
'zoid' => 'frob',
'slursh' => 'yargh',
);
$post_data = array();
foreach ($vData as $k => $v)
{
$post_data[] = urlencode($k) . '=' . urlencode($v);
}
$post_data = implode('&', $post_data);