2013-02-05 72 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。它會在後臺運行。