รบกวนช่วยดูโค๊ด php ในการส่ง SMS ด้วยค่ะ.....ได้ทำการทดสอบบน Host 2 ที่ อีกที่นึงส่งออกได้ และอีกที่ส่งออกไม่ได้ค่ะ .....
พอดีเขียนโปรแกรมส่ง SMS ซึ่งได้รับค่าพารามิเตอร์ทาง API มาเจ้าผู้ให้บริการ SMS Payment Gateway แล้วค่ะ
ได้ทดสอบ Code บน Host 2 ที่ และผลออกมาไม่เหมือนกันค่ะ คืออีกที่ 1 ได้ และอีกที่ ไม่ได้ (ที่ที่ไม่ได้เป็น Share Host ทั่วไปค่ะ)
ซึ่ง Host ที่ไม่ได้ จะขึ้นข้อความตามรายละเอียดด้านล่าง
Warning: fsockopen() [function.fsockopen]: unable to connect to xxx.xx.xx.xxx:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. )
เลยปรึกษาไปทางเจ้าของ Host ดังกล่าว ซึ่งได้รับคำแนะนำว่า ต้องเปิด Service บางตัว และถ้าเป็น Share Host จะค่อนข้างไม่ปลอดภัยในการเปิด
และอาจจะต้องใช้ Host ที่เป็นลักษณะของ VPS (แบบส่วนตัว)
ทั้งนี้ได้มาตรวจคำสั่งในบรรทัดตาม Error ที่แจ้ง
คำสั่งเป็นดังนี้ค่ะ
///////////////////// คำสั่ง
Code (PHP)
$fp = fsockopen("xxx.xx.xx.xxx", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$reqPkg = "POST /tunnel/servlet/sendSMS.do HTTP/1.1\r\n";
$reqPkg .= "Host: xxx.xx.xx.xxx\r\n";
$reqPkg .= "Content-type: text/xml; charset=UTF-8\r\n";
$reqPkg .= "Authorization: $authenHeader\r\n";
$reqPkg .= "Connection: close\r\n";
$reqPkg .= "Content-Length: " . strlen($postData) . "\r\n\r\n";
$reqPkg .= "$postData";
//echo "$reqPkg";
fwrite($fp, $reqPkg);
while (!feof($fp)) {
$respData .= fgets($fp, 128);
//echo "$respData";
}
fclose($fp);
}
$s1 = strpos($respData, "<status>")+8;
$s2 = strpos($respData, "</status>");
$code = substr($respData, $s1, $s2-$s1);
//////////////////////////////////////////
รบกวนปรึกษาค่ะ...พอจะมีทางอื่นที่ไม่ต้องใช้ Host แบบ VPS หรือเปล่าคะ เพราะ Host ลักษณะนี้จะมีราคาที่ค่อนข้างสูงกว่า Host แบบแชร์
หมายเหตุ : Host ทั่วไปสามารถเปิด Port ที่ส่ง SMS (ไม่แน่ใจว่าใช้ Port 80 หรือเปล่า) และเปิด Module แบบนี้ได้หรือเปล่าคะ
ขอบคุณค่ะTag : PHP
Date :
2011-03-11 17:53:00
By :
oranuch
View :
1591
Reply :
2
ผมเองก็ไม่เคยให้บริการ Payment Gateway นะครับ แต่พอจะมีความรู้อยู่บ้าง
ดูจาก error เหมือนว่า Server ที่คุณ Run ตัว Module นี้ ไม่สามารถติดต่อกับ Server ของทาง Payment Gateway ได้ หรือว่า ไม่มีการ Response หรือไม่มีการคืนค่ากลับมาทางคุณ เพราะที่ผมเข้าใจแบบนี้เพราะว่า อีกที่นึง มันส่งได้
จากที่ทำ SMS อยู่ เวลาเราส่งค่าอะไร แล้วทาง โน้นเขา Process เสร็จ จะมีการ Return ค่า กลับมา ตรงนี้ผมว่า ตัวระบบคุณเองพยายาบติดต่อไปคับ แต่ว่าไม่สามารถ ติดต่อได้ แล้วจะทำไง อาจจะต้องเช็คแบบนี้ครับ ดูว่า ปลายทางเป็นแบบ SSL หรือเปล่า หรือ https นะคับ เพราะผมคิดว่า การทำ payment gateway มันต้อง ซีเคียวเยอะมาก ไม่งั้นจะเกิดปัญหาตามมาจากผุ้ใช้บริการ รวมไปถึง Port ที่ทาง Payment Gateway เปิดให้ทำการส่งข้อมูลเข้าไปด้วยว่า ใช้ Port ไหน เพราะบางผู้ให้บริการเขาก็ใช้แตกต่างกันไป ขึ้นอยู่กับการ Config ของระบบคับ
ส่วนคำถามนี้ Host ทั่วไปสามารถเปิด Port ที่ส่ง SMS (ไม่แน่ใจว่าใช้ Port 80 หรือเปล่า) และเปิด Module แบบนี้ได้หรือเปล่าคะ
ตอบคือ ผมให้บริการ ผมก็ใช้ Port นี้แหละคับในการรับข้อมูลต่างๆ จาก Client ที่ติดต่อมาทาง API สำหรับ SMS ธรรมดานะครับ
Date :
2011-03-12 11:09:46
By :
diysms
ขอบคุณสำหรับคำตอบนะคะ...
Date :
2011-03-14 09:53:12
By :
oranuch
Load balance : Server 03