重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
您好:
盱眙网站建设公司创新互联,盱眙网站设计制作,有大型网站制作公司丰富经验。已为盱眙上1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的盱眙做网站的公司定做!
exit 后面加上单引号试试,也就是 exit('[]') 或 die('[]');
如果是JSON,可以用json_encode 一个空数组试试,如下:
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.向表中添加数据(不示例)
3.创建index.html客户端,a.php服务端1,b.php服务端2
Index.html:
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title客户端/title
/head
body
button onclick="send('a.php?state=0')"开始请求/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"
//创建一个模态框
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="已经处理 "+arr.now +"个,共"+arr.all+"个";
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('数据库链接失败');
mysql_select_db(DBNAME);
/*
查询数据
$sql="select * from user";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
var_dump($row);
*/
/*
循环插入
for($i=3;$i=100;$i++){
$sql= "insert into user(name,score,state) values('z".$i."',".$i.",1)";
mysql_query($sql);
}
*/
/*查询需要处理的数据总数*/
//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']}");
}
/*返回当前处理的数据*/
b.php:
?php
require('./dbconfig.php');
$link=mysql_connect(HOST,USER,PASS) or die('数据库链接失败');
mysql_select_db(DBNAME);
/*返回当前处理的数据*/
//$id=$_GET['id'];//获取将要处理的id
$now=$_GET['now'];//已经处理的个数
$all=$_GET['all'];//总共要处理的个数
$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');
其实就是访问这个php文件,返回一段数据,一般用json,然后安卓可以解析就行了了。走http协议。
你大概要先搞清楚 页面(前端) 和 PHP(后端) 的关系;
第一个页面 由 A.php完成, 提交后 输入的内容 交给B.php 由B.php 生成第二个页面。
这个时候 A.php已经不起作用了。 A.PHP 提交的内容在服务器端的 全局变量$_POST['name']里面(name 就是A.PHP中TEXTAREA 标签的name 属性值)。
注意 : 第一个页面不存在了,要想显示第一个页面的内容,就在B.php.中把第一个页面复制一遍。把重新建立一个textarea 标签 默认值是你要显示的值,
将“用户名重复”通知给前台? 直接 echo ‘用户名重复’ 就能显示在前台的哦。
你需要页面不跳传就直接返回验证信息的话,可以在前台用ajax提交表单,然后后台处理的代码基本上还是一样,只是前台需要改改js,你去网上找一个ajax提交表单的列子看看就知道了,很简单的。
使用以下代码可以更改设置。
后端代码
push.php
?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
$worker = new Worker('websocket://0.0.0.0:1234');
// 这里进程数必须设置为1
$worker-count = 1;
// worker进程启动后建立一个内部通讯端口
$worker-onWorkerStart = function($worker)
{
// 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符 $inner_text_worker = new Worker('Text://0.0.0.0:5678');
$inner_text_worker-onMessage = function($connection, $buffer)
{
global $worker;
// $data数组格式,里面有uid,表示向那个uid的页面推送数据
$data = json_decode($buffer, true);
$uid = $data['uid'];
// 通过workerman,向uid的页面推送数据
$ret = sendMessageByUid($uid, $buffer);
// 返回推送结果
$connection-send($ret ? 'ok' : 'fail');
};
$inner_text_worker-listen();
};
// 新增加一个属性,用来保存uid到connection的映射
$worker-uidConnections = array();
// 当有客户端发来消息时执行的回调函数$worker-onMessage = function($connection, $data)use($worker)
{
// 判断当前客户端是否已经验证,既是否设置了uid
if(!isset($connection-uid))
{
// 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)
$connection-uid = $data;
/* 保存uid到connection的映射,这样可以方便的通过uid查找connection,
* 实现针对特定uid推送数据
*/
$worker-uidConnections[$connection-uid] = $connection;
return;
}
};
// 当有客户端连接断开时
$worker-onClose = function($connection)use($worker)
{
global $worker;
if(isset($connection-uid))
{
// 连接断开时删除映射
unset($worker-uidConnections[$connection-uid]);
}
};
// 向所有验证的用户推送数据
function broadcast($message)
{
global $worker;
foreach($worker-uidConnections as $connection)
{
$connection-send($message);
}
}
// 针对uid推送数据
function sendMessageByUid($uid, $message)
{
global $worker;
if(isset($worker-uidConnections[$uid]))
{
$connection = $worker-uidConnections[$uid];
$connection-send($message);
return true;
}
return false;
}
// 运行所有的worker(其实当前只定义了一个)
Worker::runAll();
启动后端服务
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连接到内部推送端口
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
// 推送的数据,包含uid字段,表示是给这个uid推送
$data = array('uid'='uid1', 'percent'='88%');
// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符
fwrite($client, json_encode($data)."\n");
// 读取推送结果
echo fread($client, 8192);这里的uid不一定是用户的id,也可以理解为任务id即 taskid