php pusher,php,pusher_Linux 下php使用 Pusher 遇到一个难题,php,pusher,php-linux-环境-开发 - phpStudy...
Linux 下php使用 Pusher 遇到一個(gè)難題
最近在給賞金獵人做新的網(wǎng)站的時(shí)候想使用 Pusher 做一個(gè)首頁(yè)的吐嘈,我在本地測(cè)試都o(jì)k之后將它部署到了Linux上,可是打開(kāi)之后卻發(fā)現(xiàn)沒(méi)法實(shí)現(xiàn)消息發(fā)出,打開(kāi)Pusher的控制臺(tái)察看信息是顯示通道連接了,但是發(fā)送消息的事件沒(méi)有執(zhí)行。我打開(kāi)本地的(本地的和部署的使用同一個(gè)Pusher應(yīng)用),本地發(fā)的東西可以顯示在部署的那個(gè)上面。看了半天都沒(méi)找到問(wèn)題所在。
整個(gè)項(xiàng)目的結(jié)構(gòu)如下:
main.js 文件內(nèi)容:
(function($){
var pusher = new Pusher('18f9924cb7ee44a01ec0'),
channel = pusher.subscribe('imgondar');
Pusher.log = function( msg ) {
if( console && console.log ) {
console.log( msg );
}
};
channel.bind('send_message', function (data) {
Snarl.addNotification({
title: data.name,
text: data.msg,
timeout: 5000
});
});
$('form').submit(function(){
var say = $('#message').val();
if ( say ) {
$.post('post.php', $(this).serialize());
$('#message').val('').focus();
}
return false;
});
})(jQuery);
post.php 文件內(nèi)容:
require './lib/Pusher.php';
$app_id = '111087';
$app_key = '18f9924cb7ee44a01ec0';
$app_secret = '09c7dd1a71a92c90ce2d';
$pusher = new Pusher($app_key, $app_secret, $app_id);
$data = array(
'name' => htmlentities( getName().':' ),
'msg' => htmlentities(strip_tags($_REQUEST['message'])),
);
$pusher->trigger('imgondar', 'send_message', $data);
function getName(){
$name_array = array(0 => "小龍女",1 => "楊過(guò)",2 => "金庸",3 => "郭靖",4 => "黃蓉",5 => "歐陽(yáng)鋒",6 => "段譽(yù)",7 => "語(yǔ)嫣",8 => "虛竹",9 => "牧塵",10 => "Java",11 => "JavaScript",12 => "Python",13 => "C++",
14 => "HTML",15 => "什么鬼~~",16 => "想不出來(lái)了^^",17 => "阿列",18 => "就是想吐槽",19 => "路人甲",20 => "路人乙",21 => "跑龍?zhí)?#34;,22 => "主角",23 => "我是女主",24 => "我只是奴婢",25 => "請(qǐng)叫我容嬤嬤",26 => "我會(huì)降龍十八掌",27 => "小白",28 => "無(wú)語(yǔ)了!-_-",29 => "喬峰",30 => "不良人",
);
$index = rand(0, count($name_array)-1);
return $name_array[$index];
}
本地http://127.0.0.1/imgondarv8_test/訪(fǎng)問(wèn)之后點(diǎn)擊發(fā)送,在瀏覽器看到如下效果:
因?yàn)槲以?main.js 代碼中讓其輸出日志,打開(kāi)瀏覽器的控制臺(tái)看到:
打開(kāi)Pusher的控制臺(tái):
現(xiàn)在問(wèn)題來(lái)了,我把通過(guò) svn 把代碼部署到了Linux服務(wù)器上,通過(guò)如下域名訪(fǎng)問(wèn):
http://testgondar.helloarron.com/
點(diǎn)擊發(fā)送后沒(méi)有效果,Pusher控制臺(tái)和瀏覽器控制臺(tái)信息如下:
雖然連接了但是消息沒(méi)有發(fā)送成功。
但是我用本地的 http://127.0.0.1/imgondarv8_test/ 發(fā)消息可以在部署好的那個(gè)什么接收到(畢竟使用的是同一個(gè)Pusher 應(yīng)用),在瀏覽器控制臺(tái)顯示接受到的信息:
測(cè)試了半天就是post.php里面的$pusher->trigger('imgondar', 'send_message', $data);在Linux下面沒(méi)有執(zhí)行。
查看了Pusher.php文件的trigger函數(shù):
public function trigger ( $channel, $event, $payload, $socket_id = null, $debug = false, $already_encoded = false )
{
$ch = curl_init();
if ( $ch === false ){
die( 'Could not initialise cURL!' );
}
# Add channel to URL..
$s_url = $this->settings['url'] . '/channels/' . $channel . '/events';
# Build the request
$signature = "POST\n" . $s_url . "\n";
$payload_encoded = $already_encoded ? $payload : json_encode( $payload );
$query = "auth_key=" . $this->settings['auth_key'] . "&auth_timestamp=" . time() . "&auth_version=1.0&body_md5=" . md5( $payload_encoded ) . "&name=" . $event;
# Socket ID set?
if ( $socket_id !== null ){
$query .= "&socket_id=" . $socket_id;
}
# Create the signed signature...
$auth_signature = hash_hmac( 'sha256', $signature . $query, $this->settings['secret'], false );
$signed_query = $query . "&auth_signature=" . $auth_signature;
$full_url = $this->settings['server'] . ':' . $this->settings['port'] . $s_url . '?' . $signed_query;
# Set cURL opts and execute request
curl_setopt( $ch, CURLOPT_URL, $full_url );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array ( "Content-Type: application/json" ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload_encoded );
curl_setopt( $ch, CURLOPT_TIMEOUT, $this->settings['timeout'] );
$response = curl_exec( $ch );
curl_close( $ch );
if ( $response == "202 ACCEPTED\n" && $debug == false ){
return true;
} elseif ( $debug == true || $this->settings['debug'] == true ) {
return $response;
} else {
return false;
}
}
我覺(jué)得可能是linux下的php環(huán)境沒(méi)有開(kāi)啟curl模塊,于是自己寫(xiě)了一個(gè)簡(jiǎn)單的抓取百度首頁(yè)的例子,發(fā)現(xiàn)服務(wù)器上的curl是開(kāi)啟的。實(shí)在是找不到其他原因了,還請(qǐng)大神們給支支招。謝謝^^
相關(guān)閱讀:
DOM事件綁定回調(diào)函數(shù)執(zhí)行過(guò)程是什么?
gitlab webhook 設(shè)置
哪里有介紹angular-material的樣式類(lèi)?
brackets編輯器怎么設(shè)置換行符?
使用fatfree框架,debug=3,為什么log都打到了php_error.log里面?
圖中紅框內(nèi)數(shù)據(jù)庫(kù)關(guān)聯(lián)符號(hào)是什么意思?
調(diào)試程序的時(shí)候暴露在console的參數(shù)信息不清除有什么危害?
使用PHP,當(dāng)curl初始化時(shí)產(chǎn)生解析錯(cuò)誤
react的super屬性是指什么?
谷歌學(xué)術(shù)搜索結(jié)果中abstract不完整,完整信息搜索引擎不提供嗎?
如何獲得iframe里的document
z-index 和 translateZ(0)的疑問(wèn)
pv量統(tǒng)計(jì),a標(biāo)簽點(diǎn)擊包括站內(nèi)和站外的鏈接
web app可以設(shè)0.5px寬的邊框嗎
那些ORM的庫(kù)要怎么解決+1-1這樣時(shí)的安全問(wèn)題
angularjs怎樣把有PHP代碼的共用部分提出來(lái)
批量查詢(xún)域名的注冊(cè)狀態(tài)
iOS開(kāi)發(fā), 如何通過(guò)HTTP Post發(fā)送這個(gè)符號(hào)"&"到服務(wù)器?
php站點(diǎn),點(diǎn)擊提交按鈕到返回結(jié)果都經(jīng)歷了哪些過(guò)程?
ionic有沒(méi)有其他一些開(kāi)源項(xiàng)目?
總結(jié)
以上是生活随笔為你收集整理的php pusher,php,pusher_Linux 下php使用 Pusher 遇到一个难题,php,pusher,php-linux-环境-开发 - phpStudy...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: swift 框架大全
- 下一篇: linux 其他常用命令