您好:
盱眙網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),盱眙網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為盱眙上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的盱眙做網(wǎng)站的公司定做!
exit 后面加上單引號(hào)試試,也就是 exit('[]') 或 die('[]');
如果是JSON,可以用json_encode 一個(gè)空數(shù)組試試,如下:
echo json_encode(array());
exit;
或者
die(json_encode(array()));
create databases handle;
create table user(
id int unsigned not null auto_increment primary key,
name varchar(8),
sex tinyint(1) default '1',
score int not null,
state tinyint(1)
);
2.向表中添加數(shù)據(jù)(不示例)
3.創(chuàng)建index.html客戶端,a.php服務(wù)端1,b.php服務(wù)端2
Index.html:
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title客戶端/title
/head
body
button onclick="send('a.php?state=0')"開始請(qǐng)求/button
div style="position: fixed;width: 500px;height: 300px;top: 100px;background: gray"
span style="color: white;font-size: 20px;"/span
/div
script type="text/javascript" src="./jquery-1.10.2.min.js"/script
script type="text/javascript"
//創(chuàng)建一個(gè)模態(tài)框
function display(value){
$('span').html(value);
}
//ajax
function send(dizhi){
$.ajax({
type: "get",
url: dizhi,
success: function(msg){
var arr=JSON.parse(msg);
console.log(arr);
//alert(arr.value);
var tishi="已經(jīng)處理 "+arr.now +"個(gè),共"+arr.all+"個(gè)";
display(tishi);
if(arr.now!=arr.all){
send("a.php?now="+arr.now+"all="+arr.all);
}else{
alert("完成!");
}
}
});
}
/script
/body
/html
a.php:
?php
require('./dbconfig.php');
$link=mysql_connect(HOST,USER,PASS) or die('數(shù)據(jù)庫(kù)鏈接失敗');
mysql_select_db(DBNAME);
/*
查詢數(shù)據(jù)
$sql="select * from user";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
var_dump($row);
*/
/*
循環(huán)插入
for($i=3;$i=100;$i++){
$sql= "insert into user(name,score,state) values('z".$i."',".$i.",1)";
mysql_query($sql);
}
*/
/*查詢需要處理的數(shù)據(jù)總數(shù)*/
//isset($_GET['state'])?$_GET['state']:0;
if(isset($_GET['state'])){
$sql="select count(*) from user";
$result=mysql_query($sql);
$all=mysql_result($result,0);
$now=0;
header("Location: b.php?all={$all}now=0");
}else{
header("Location: b.php?all={$_GET['all']}now={$_GET['now']}");
}
/*返回當(dāng)前處理的數(shù)據(jù)*/
b.php:
?php
require('./dbconfig.php');
$link=mysql_connect(HOST,USER,PASS) or die('數(shù)據(jù)庫(kù)鏈接失敗');
mysql_select_db(DBNAME);
/*返回當(dāng)前處理的數(shù)據(jù)*/
//$id=$_GET['id'];//獲取將要處理的id
$now=$_GET['now'];//已經(jīng)處理的個(gè)數(shù)
$all=$_GET['all'];//總共要處理的個(gè)數(shù)
$sql="select score from user limit {$now},1";
$result=mysql_query($sql);
$value=mysql_result($result, 0);
$now++;
$arr=array(
'now'=$now,
'all'=$all,
'value'=$value
);
//print_r($arr);
echo json_encode($arr);
dbconfig.php:
?php
define('HOST','127.0.0.1');
define('USER', 'root');
define('PASS','root');
define('DBNAME','handle');
其實(shí)就是訪問這個(gè)php文件,返回一段數(shù)據(jù),一般用json,然后安卓可以解析就行了了。走h(yuǎn)ttp協(xié)議。
你大概要先搞清楚 頁面(前端) 和 PHP(后端) 的關(guān)系;
第一個(gè)頁面 由 A.php完成, 提交后 輸入的內(nèi)容 交給B.php 由B.php 生成第二個(gè)頁面。
這個(gè)時(shí)候 A.php已經(jīng)不起作用了。 A.PHP 提交的內(nèi)容在服務(wù)器端的 全局變量$_POST['name']里面(name 就是A.PHP中TEXTAREA 標(biāo)簽的name 屬性值)。
注意 : 第一個(gè)頁面不存在了,要想顯示第一個(gè)頁面的內(nèi)容,就在B.php.中把第一個(gè)頁面復(fù)制一遍。把重新建立一個(gè)textarea 標(biāo)簽 默認(rèn)值是你要顯示的值,
將“用戶名重復(fù)”通知給前臺(tái)? 直接 echo ‘用戶名重復(fù)’ 就能顯示在前臺(tái)的哦。
你需要頁面不跳傳就直接返回驗(yàn)證信息的話,可以在前臺(tái)用ajax提交表單,然后后臺(tái)處理的代碼基本上還是一樣,只是前臺(tái)需要改改js,你去網(wǎng)上找一個(gè)ajax提交表單的列子看看就知道了,很簡(jiǎn)單的。
使用以下代碼可以更改設(shè)置。
后端代碼
push.php
?php
use?Workerman\Worker;
require_once?'./Workerman/Autoloader.php';
$worker?=?new?Worker('websocket://0.0.0.0:1234');
//?這里進(jìn)程數(shù)必須設(shè)置為1
$worker-count?=?1;
//?worker進(jìn)程啟動(dòng)后建立一個(gè)內(nèi)部通訊端口
$worker-onWorkerStart?=?function($worker)
{
//?開啟一個(gè)內(nèi)部端口,方便內(nèi)部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式?文本+換行符????$inner_text_worker?=?new?Worker('Text://0.0.0.0:5678');
$inner_text_worker-onMessage?=?function($connection,?$buffer)
{
global?$worker;
//?$data數(shù)組格式,里面有uid,表示向那個(gè)uid的頁面推送數(shù)據(jù)
$data?=?json_decode($buffer,?true);
$uid?=?$data['uid'];
//?通過workerman,向uid的頁面推送數(shù)據(jù)
$ret?=?sendMessageByUid($uid,?$buffer);
//?返回推送結(jié)果
$connection-send($ret???'ok'?:?'fail');
};
$inner_text_worker-listen();
};
//?新增加一個(gè)屬性,用來保存uid到connection的映射
$worker-uidConnections?=?array();
//?當(dāng)有客戶端發(fā)來消息時(shí)執(zhí)行的回調(diào)函數(shù)$worker-onMessage?=?function($connection,?$data)use($worker)
{
//?判斷當(dāng)前客戶端是否已經(jīng)驗(yàn)證,既是否設(shè)置了uid
if(!isset($connection-uid))
{
//?沒驗(yàn)證的話把第一個(gè)包當(dāng)做uid(這里為了方便演示,沒做真正的驗(yàn)證)
$connection-uid?=?$data;
/*?保存uid到connection的映射,這樣可以方便的通過uid查找connection,
*?實(shí)現(xiàn)針對(duì)特定uid推送數(shù)據(jù)
*/
$worker-uidConnections[$connection-uid]?=?$connection;
return;
}
};
//?當(dāng)有客戶端連接斷開時(shí)
$worker-onClose?=?function($connection)use($worker)
{
global?$worker;
if(isset($connection-uid))
{
//?連接斷開時(shí)刪除映射
unset($worker-uidConnections[$connection-uid]);
}
};
//?向所有驗(yàn)證的用戶推送數(shù)據(jù)
function?broadcast($message)
{
global?$worker;
foreach($worker-uidConnections?as?$connection)
{
$connection-send($message);
}
}
//?針對(duì)uid推送數(shù)據(jù)
function?sendMessageByUid($uid,?$message)
{
global?$worker;
if(isset($worker-uidConnections[$uid]))
{
$connection?=?$worker-uidConnections[$uid];
$connection-send($message);
return?true;
}
return?false;
}
//?運(yùn)行所有的worker(其實(shí)當(dāng)前只定義了一個(gè))
Worker::runAll();
啟動(dòng)后端服務(wù)
php?push.php?start?-d
前端接收推送的js代碼
var?ws?=?new?WebSocket('ws://127.0.0.1:1234');
ws.onopen?=?function(){
var?uid?=?'uid1';
ws.send(uid);
};
ws.onmessage?=?function(e){
alert(e.data);
};后端推送消息的代碼
//?建立socket連接到內(nèi)部推送端口
$client?=?stream_socket_client('tcp://127.0.0.1:5678',?$errno,?$errmsg,?1,??STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
//?推送的數(shù)據(jù),包含uid字段,表示是給這個(gè)uid推送
$data?=?array('uid'='uid1',?'percent'='88%');
//?發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client,?json_encode($data)."\n");
//?讀取推送結(jié)果
echo?fread($client,?8192);這里的uid不一定是用戶的id,也可以理解為任務(wù)id即 taskid