You've already forked qlg.tsgz.moe
addons
app_download_files
extend
hyhproject
mobile
oss
static
thinkphp
upload
vendor
5ini99
composer
oss-sdk
swoole
.github
benchmark
examples
async
atomic
channel
client
coroutine
eof
event
http
http2
ipv6
length
lock
memory
mmap
multicast
mysql
namespace
php
postgresql
process
redis
runtime
server
socket_coro
ssl
table
task
timer
udp
unixsock
websocket
buffer.php
c10k.php
channel.php
client2.php
db_pool.php
get_local_ip.php
hot_update_class.php
multi_port_server.php
mysql_proxy_server.php
proxy_sync.php
recv_1m_client.php
recv_file.php
redis_pool.php
reflection_test.php
ringqueue.php
send_1m_svr.php
sendfile_server.php
serialize.php
serialize2.php
server.c
server.php
server_hot_update_opcache.php
set_cpu_affinity.php
swoole_http_client.php
test.jpg
test_buffer.php
test_server.c
version.php
weather_server.php
include
src
tests
thirdparty
tools
travis
.gitignore
.gitmodules
.travis.yml
CMakeLists.txt
CREDITS
LICENSE
README.md
Version2.md
build.sh
clear.sh
config.m4
make.sh
package.xml
php7_wrapper.h
php_swoole.h
swoole.c
swoole_async.c
swoole_atomic.c
swoole_buffer.c
swoole_channel.c
swoole_channel_coro.cc
swoole_client.c
swoole_client_coro.c
swoole_config.h
swoole_coroutine.cc
swoole_coroutine.h
swoole_coroutine_util.c
swoole_event.c
swoole_http.h
swoole_http_client.c
swoole_http_client.h
swoole_http_client_coro.c
swoole_http_server.c
swoole_http_v2_client.c
swoole_http_v2_client.h
swoole_http_v2_client_coro.c
swoole_http_v2_server.c
swoole_lock.c
swoole_memory_pool.c
swoole_mmap.c
swoole_msgqueue.c
swoole_mysql.c
swoole_mysql.h
swoole_mysql_coro.c
swoole_postgresql_coro.c
swoole_postgresql_coro.h
swoole_process.c
swoole_process_pool.c
swoole_redis.c
swoole_redis_coro.c
swoole_redis_server.c
swoole_ringqueue.c
swoole_runtime.cc
swoole_serialize.c
swoole_serialize.h
swoole_server.c
swoole_server_port.c
swoole_socket_coro.c
swoole_table.c
swoole_timer.c
swoole_trace.c
swoole_websocket_server.c
wechat
.htaccess
autoload.php
wxtmp
.gitignore
.htaccess
.user.ini
404.html
H5436787D.wgt
admin.php
app-release.apk
app_download.html
cash.lock
demo.php
get_startup.php
get_version.php
get_version_new.php
index.html
index.php
reg.lock
robots.txt
202 lines
5.7 KiB
PHP
Executable File
202 lines
5.7 KiB
PHP
Executable File
<?php
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', '1');
|
|
ini_set('memory_limit', '-1');
|
|
|
|
class HttpServ
|
|
{
|
|
public $http;
|
|
public $setting = array();
|
|
|
|
public function __construct()
|
|
{
|
|
|
|
}
|
|
|
|
public function set($setting)
|
|
{
|
|
$this->setting = $setting;
|
|
}
|
|
|
|
public function init()
|
|
{
|
|
|
|
$this->http = new swoole_http_server($this->setting['host'], $this->setting['port'], SWOOLE_BASE);
|
|
$this->http->set($this->setting);
|
|
//register_shutdown_function('handleFatal');
|
|
$this->http->on('request', function ($request, $response)
|
|
{
|
|
if ($request->server['request_uri'] == '/favicon.ico')
|
|
{
|
|
$response->status(404);
|
|
$response->end('Not Found');
|
|
return;
|
|
}
|
|
$this->getResult($response);
|
|
});
|
|
}
|
|
|
|
function getResult2($response)
|
|
{
|
|
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
|
$client->on('connect', function ($cli)
|
|
{
|
|
echo "cli1 connect\n";
|
|
$cli->send("hello world\n");
|
|
});
|
|
|
|
$client->on('Receive', function ($cli, $data) use ($response)
|
|
{
|
|
echo "cli1 receive\n";
|
|
$response->end($data);
|
|
$cli->close();
|
|
});
|
|
|
|
$client->on("error", function ($cli) use ($response)
|
|
{
|
|
echo "cli1 error\n";
|
|
$response->end("empty\n");
|
|
});
|
|
|
|
$client->on("close", function ($cli)
|
|
{
|
|
echo "cli1 close\n";
|
|
});
|
|
$client->connect('127.0.0.1', 9501);
|
|
}
|
|
|
|
function getResult5($response)
|
|
{
|
|
swoole_async_dns_lookup("weather.gtimg.cn", function ($host, $ip) use ($response)
|
|
{
|
|
$response->header('Content-Type', 'application/json');
|
|
$response->write(json_encode(array($host => $ip)));
|
|
$response->end();
|
|
});
|
|
}
|
|
|
|
function getResult3($response)
|
|
{
|
|
$cityId = '01010101';
|
|
// swoole_async_dns_lookup("weather.gtimg.cn", function ($host, $ip) use ($cityId, $response)
|
|
// {
|
|
// if (empty($ip))
|
|
// {
|
|
// return $ret;
|
|
// }
|
|
// else
|
|
// {
|
|
$ip = '14.18.245.236';
|
|
$httpcli = new swoole_http_client($ip, 80);
|
|
//$httpcli->on("close", function($httpcli){});
|
|
$url = "/qqindex/" . $cityId . ".js?_ref=14";
|
|
|
|
$httpcli->get($url, function ($hcli) use ($response)
|
|
{
|
|
//echo "get content is" . $hcli->body;
|
|
$retWeather = iconv("GBK", 'UTF-8', $hcli->body);
|
|
//echo "ret:" . $retWeather;
|
|
$hcli->close();
|
|
|
|
$response->header('Content-Type', 'application/json');
|
|
$response->write(json_encode($retWeather));
|
|
$response->end();
|
|
});
|
|
// }
|
|
// });
|
|
}
|
|
|
|
function getResult($response)
|
|
{
|
|
$client = new swoole_redis();
|
|
$ip = "127.0.0.1";
|
|
$port = 6379;
|
|
|
|
$client->connect($ip, $port, function (swoole_redis $client, $result) use ($response)
|
|
{
|
|
if ($result === false)
|
|
{
|
|
echo "connect to redis server failed\n";
|
|
return false;
|
|
}
|
|
$client->GET('test', function (swoole_redis $client, $result) use ($response)
|
|
{
|
|
//echo "get result is :" . $result;
|
|
$client->close();
|
|
$cityId = '01010101';
|
|
swoole_async_dns_lookup("weather.gtimg.cn", function ($host, $ip) use ($cityId, $response)
|
|
{
|
|
if (empty($ip))
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$httpcli = new swoole_http_client($ip, 80);
|
|
//$httpcli->on("close", function($httpcli){});
|
|
$url = "/qqindex/" . $cityId . ".js?_ref=14";
|
|
|
|
$httpcli->get($url, function ($hcli) use ($response)
|
|
{
|
|
//echo "get content is" . $hcli->body;
|
|
$retWeather = iconv("GBK", 'UTF-8', $hcli->body);
|
|
//echo "ret:" . $retWeather;
|
|
$hcli->close();
|
|
|
|
$response->header('Content-Type', 'application/json');
|
|
$response->write(json_encode($retWeather));
|
|
$response->end();
|
|
|
|
});
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function getResult4($response)
|
|
{
|
|
$client = new swoole_redis();
|
|
$ip = "127.0.0.1";
|
|
$port = 6379;
|
|
|
|
$client->connect($ip, $port, function (swoole_redis $client, $result) use ($response)
|
|
{
|
|
if ($result === false)
|
|
{
|
|
echo "connect to redis server failed\n";
|
|
return false;
|
|
}
|
|
$client->GET('key', function (swoole_redis $client, $result) use ($response)
|
|
{
|
|
//echo "get result is :" . $result;
|
|
$response->header('Content-Type', 'application/json');
|
|
$response->end($result);
|
|
});
|
|
});
|
|
}
|
|
|
|
public function start()
|
|
{
|
|
$this->init();
|
|
$this->http->start();
|
|
}
|
|
}
|
|
|
|
|
|
$setting = array(
|
|
|
|
'host' => '127.0.0.1',
|
|
'port' => 9100,
|
|
'worker_num' => 1,
|
|
'dispatch_mode' => 2,
|
|
//'reactor_num' => 4,
|
|
'daemonize' => 0,
|
|
//'log_file' => './logs/test_udp_server.log',
|
|
);
|
|
|
|
|
|
$server = new HttpServ();
|
|
$server->set($setting);
|
|
$server->start();
|