Skip to content

Commit

Permalink
Update ret_value
Browse files Browse the repository at this point in the history
  • Loading branch information
matyhtf committed Jul 14, 2014
1 parent 41e034a commit 5345a6f
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 27 deletions.
66 changes: 46 additions & 20 deletions examples/server.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ function my_onWorkerStart($serv, $worker_id)
}
echo "WorkerStart: MasterPid={$serv->master_pid}|Manager_pid={$serv->manager_pid}";
echo "|WorkerId={$serv->worker_id}|WorkerPid={$serv->worker_pid}\n";
//if ($worker_id == 1)

//if ($worker_id == 1)
//{
// $serv->addtimer(2000); //500ms
// $serv->addtimer(6000); //500ms
Expand Down Expand Up @@ -90,28 +90,23 @@ function my_onReceive(swoole_server $serv, $fd, $from_id, $data)
$result = $serv->taskwait("hello world", 2);
echo "SyncTask: result=$result\n";
}
elseif ($cmd == "hellotask")
{
$serv->task("hellotask");
}
elseif($cmd == "close")
{
$serv->send($fd, "close connection\n");
$result = $serv->close($fd);
}
elseif($cmd == "info")
{
$info = $serv->connection_info($fd);
$serv->send($fd, 'Info: '.var_export($info, true).PHP_EOL);
}
elseif($cmd == "broadcast")
{
$start_fd = 0;
while(true)
{
$conn_list = $serv->connection_list($start_fd, 10);
if($conn_list === false)
{
break;
}
$start_fd = end($conn_list);
foreach($conn_list as $conn)
{
if($conn === $fd) continue;
$serv->send($conn, "hello from $fd\n");
}
}
broadcast($serv, $fd, "hello from $fd\n");
}
//这里故意调用一个不存在的函数
elseif($cmd == "error")
Expand All @@ -130,7 +125,8 @@ function my_onReceive(swoole_server $serv, $fd, $from_id, $data)
}
else
{
$serv->send($fd, 'Swoole: '.$data, $from_id);
$ret = $serv->send($fd, 'Swoole: '.$data, $from_id);
var_dump($ret);
//$serv->close($fd);
}
//echo "Client:Data. fd=$fd|from_id=$from_id|data=$data";
Expand All @@ -140,8 +136,15 @@ function my_onReceive(swoole_server $serv, $fd, $from_id, $data)

function my_onTask(swoole_server $serv, $task_id, $from_id, $data)
{
echo "AsyncTask[PID=".posix_getpid()."]: task_id=$task_id.".PHP_EOL;
return "Task OK";
if ($data == "hellotask")
{
broadcast($serv, 0, "hellotask");
}
else
{
echo "AsyncTask[PID=".posix_getpid()."]: task_id=$task_id.".PHP_EOL;
return "Task OK";
}
}

function my_onFinish(swoole_server $serv, $task_id, $data)
Expand All @@ -154,6 +157,29 @@ function my_onWorkerError(swoole_server $serv, $worker_id, $worker_pid, $exit_co
echo "worker abnormal exit. WorkerId=$worker_id|Pid=$worker_pid|ExitCode=$exit_code\n";
}

function broadcast($serv, $fd = 0, $data = "hello")
{
$start_fd = 0;
echo "broadcast\n";
while(true)
{
$conn_list = $serv->connection_list($start_fd, 10);
if($conn_list === false)
{
break;
}
$start_fd = end($conn_list);
foreach($conn_list as $conn)
{
if($conn === $fd) continue;
$ret1 = $serv->send($conn, $data);
var_dump($ret1);
$ret2 = $serv->close($conn);
var_dump($ret2);
}
}
}

$serv->on('Start', 'my_onStart');
$serv->on('Connect', 'my_onConnect');
$serv->on('Receive', 'my_onReceive');
Expand Down
2 changes: 1 addition & 1 deletion php_swoole.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ extern void ***sw_thread_ctx;
//#define SW_USE_PHP 1
#define SW_HANDLE_NUM
#define SW_CHECK_RETURN(s) if(s<0){RETURN_FALSE;}else{RETURN_TRUE;}return
#define SW_LOCK_CHECK_RETURN(s) if(s==0){RETURN_TRUE;}else{RETURN_TRUE;}return
#define SW_LOCK_CHECK_RETURN(s) if(s==0){RETURN_TRUE;}else{RETURN_FALSE;}return

#ifdef SW_ASYNC_MYSQL
#if PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 4 && defined(SW_HAVE_MYSQLI) && defined(SW_HAVE_MYSQLND)
Expand Down
2 changes: 0 additions & 2 deletions src/factory/FactoryProcess.c
Original file line number Diff line number Diff line change
Expand Up @@ -558,8 +558,6 @@ static int swFactoryProcess_worker_spawn(swFactory *factory, int worker_pti)
//worker child processor
else if (pid == 0)
{
//标识为worker进程
SwooleG.process_type = SW_PROCESS_WORKER;
ret = swFactoryProcess_worker_loop(factory, worker_pti);
exit(ret);
}
Expand Down
3 changes: 3 additions & 0 deletions src/network/Server.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ void swServer_worker_onStart(swServer *serv)
close(worker->pipe_master);
}
}

SwooleG.process_type = SW_PROCESS_WORKER;

if (serv->onWorkerStart)
{
serv->onWorkerStart(serv, SwooleWG.id);
Expand Down
14 changes: 10 additions & 4 deletions swoole.c
Original file line number Diff line number Diff line change
Expand Up @@ -1328,13 +1328,19 @@ PHP_FUNCTION(swoole_server_close)
RETURN_FALSE;
}

if (serv->factory.end(&serv->factory, &ev) >= 0 && serv->onClose != NULL)
if (serv->factory.end(&serv->factory, &ev) >= 0)
{
serv->onClose(serv, ev.fd, ev.from_id);
RETURN_TRUE;
RETVAL_TRUE;
}
else
{
RETVAL_FALSE;
}

RETURN_FALSE;
if (serv->onClose != NULL)
{
serv->onClose(serv, ev.fd, ev.from_id);
}
}

PHP_FUNCTION(swoole_server_reload)
Expand Down
34 changes: 34 additions & 0 deletions tests/unittest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
/**
* UnitTests for swoole server.
* This is just a client. Server see examples/server.php
*/

$client = new swoole_client(SWOOLE_TCP);

if (!$client->connect('127.0.0.1', 9501))
{
echo "Step-1: failed. Error: connect to server failed.\n";
}
else
{
if (!$client->send("hello"))
{
echo "Step-2: failed. Error: send to server failed.\n";
}
$data = $client->recv();
if (!$data)
{
echo "Step-3: failed. Error: send to server failed.\n";
}
else if ($data != "Swoole: hello")
{
echo "Step-4: failed. Error: recv error data.\n";
}
}

if (!$client->close())
{
echo "Step-8: failed. Error: close failed.\n";
}
echo "UnitTest Finish.\n";

0 comments on commit 5345a6f

Please sign in to comment.