2013-02-05 35 views
2

在我的应用程序中,我必须在注册时向用户发送短信。但是,在数据库插入记录时,我想在浏览器中打这个URL。在后台运行url在php中

任何一个可以建议如何在backgound

http://www.myurl.com/smpp/sendsms?username=XX&password=XX&to=XX&from=XX&text=Test

+2

你可以使用CURL –

+0

I second什么@IrfanDANISH说:) –

回答

0

运行这个网址,你可以fork一个子进程与了pcntl PHP扩展。

(库实现了这个:https://github.com/kriswallsmith/spork

+0

你永远不应该从apache线程fork。这不好。 –

+0

是的,但他可以创建一个php cli脚本,他可以通过它调用。系统或执行或什么的。 – gries

+0

这是不是像用凯迪拉克扑打苍蝇?卷曲是如此简单... – EmmyS

0

我认为没有这样的概念,多线程(这在本质上是你所要求的),如在PHP代码的一切增量运行,但你可以得到一个解决方案。请参阅thisthis问题及其答案。

PHP中没有多线程的原因是因为在服务器中处理的所有内容都是,并且作为客户端,您已经收到完成的响应,所以PHP中的“在后台运行”与“顺序运行“。

0

当用户点击提交按钮时进行AJAX调用。这会导致该URL中的脚本在后台运行,而当前的PHP将该记录插入到数据库中。

0

Ajax?在保存用ajax调用另一个php文件的记录时,使用ajax将该url加载到div中。

1

不要从客户端发送此信息,因为每个用户只需通过加载一些(可能是恶意的)参数来链接您的URL即可轻松“伪造”数据。 “用户名”和“密码”根本不受保护,我相信你的服务会很快下降。

相反,你可以很容易地做到这一点在后台(服务器端)与PHP的卷曲功能:

http://www.php.net/manual/en/curl.examples-basic.php

5

嗯,这取决于你的意思与background但是我asuming你的意思用户不会被重定向到该页面。

如果我是你,如果你已经安装了它,我会与cURL一起去,因为你唯一想做的事情就是做一个普通的请求,也许读取响应。下面的代码没有经过测试,但应该给你一个提示。

$req = curl_init(); 
curl_setopt($req, CURLOPT_URL,"theaddress_and_params"); 
curl_exec($req); 
2

如果你这样做了,你会在URL(或标题)中公开用户名和密码。让用户提前登录并使用会话变量。

0
$url = 'http://yoursmsgateway.com/WebSMS/SMSAPI.jsp?username='.$smsuser.'&password='.$smspwd.'&sendername='.$smssender.'&mobileno='.$number.'&message='.urlencode($message); 

echo $url; 

    $mystring = get_data($url); 

//echo "hi!"; 

echo $mystring; 

function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

您可以试试这段代码,但是您必须安装cUrl DLL文件。安装CURL过程在下面给出: -

1)打开php.ini文件

2)找到此DLL文件--->;延长= php_curl.dll

3.)去掉 ; (分号)

4.)例如---> extension = php_curl。dll的

5)保存(CTRL + S)

1
public function get_url($url) 
{ 
    $cmd = "curl --max-time 60 "; 
    $cmd .= "'" . $url . "'"; 
    $cmd .= " > /dev/null 2>&1 &"; 
    exec($cmd, $output, $exit); 
    return $exit == 0; 
} 

它会调用卷曲通过CLI。它会在后台运行。