mirror of
https://github.com/php/pecl-networking-gearman.git
synced 2026-03-23 23:22:22 +01:00
- Fixed build issue with 5.1.x
Merged eday changes
- Added wait functions, uncommented other worker functions.
- Added timeout functions.
- Updated function list from C library and removed free methods
(should use unset).
- Added stubs for new functions, fixed tests, fixed some of the
existing functions from changes.
This commit is contained in:
@@ -27,12 +27,12 @@ if test "$PHP_GEARMAN" != "no"; then
|
||||
AC_MSG_ERROR([Please install libgearman])
|
||||
fi
|
||||
|
||||
PHP_CHECK_LIBRARY(gearman, gearman_create,
|
||||
PHP_CHECK_LIBRARY(gearman, gearman_client_set_context,
|
||||
[
|
||||
PHP_ADD_LIBRARY_WITH_PATH(gearman, $GEARMAN_LIB_DIR, GEARMAN_SHARED_LIBADD)
|
||||
AC_DEFINE(HAVE_GEARMAN, 1, [Whether you have gearman])
|
||||
],[
|
||||
AC_MSG_ERROR([wrong libgearman version or lib not found])
|
||||
AC_MSG_ERROR([libgearman version 0.10 or later required])
|
||||
],[
|
||||
-L$GEARMAN_LIB_DIR -R$GEARMAN_LIB_DIR
|
||||
])
|
||||
|
||||
@@ -34,9 +34,9 @@ awk 'BEGIN { p= 1; } \
|
||||
|
||||
grep ' GEARMAN' $header | \
|
||||
sed 's/.*\(GEARMAN[A-Z0-9_]*\).*/\1/' | \
|
||||
sed 's/\(.*\)/ REGISTER_LONG_CONSTANT("\1",\
|
||||
\1,\
|
||||
CONST_CS | CONST_PERSISTENT);/' | \
|
||||
sed 's/\(.*\)/ REGISTER_LONG_CONSTANT("\1",\
|
||||
\1,\
|
||||
CONST_CS | CONST_PERSISTENT);/' | \
|
||||
sed 's/LONG\(.*GEARMAN_DEFAULT_TCP_HOST\)/STRING\1/' | \
|
||||
sed 's/LONG\(.*GEARMAN_DEFAULT_UDS\)/STRING\1/' | \
|
||||
sed 's/LONG\(.*GEARMAN_DEFAULT_USER\)/STRING\1/' >> php_gearman.c.new
|
||||
|
||||
@@ -41,14 +41,14 @@ function resize_image($job, $args)
|
||||
$wrk= $job->workload();
|
||||
$data= unserialize($wrk);
|
||||
if (! $data['src'] || ! $data['dest'] || ! $data['x'])
|
||||
{ $job->fail(); print_r($data); return; }
|
||||
{ $job->sendFail(); print_r($data); return; }
|
||||
echo $job->handle() . " - creating: $data[dest] x:$data[x] y:$data[y]\n";
|
||||
$im= new Imagick();
|
||||
$im->readimage($data['src']);
|
||||
$im->thumbnailImage($data['x'], $data['y']);
|
||||
$im->writeImage($data['dest']);
|
||||
$im->destroy();
|
||||
$job->status(1, 1);
|
||||
$job->sendStatus(1, 1);
|
||||
|
||||
return $data['dest'];
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ function reverse_fn($job)
|
||||
{
|
||||
echo "Sending status: $x/$workload_size complete\n";
|
||||
/*
|
||||
$job->status($x, $workload_size);
|
||||
$job->sendStatus($x, $workload_size);
|
||||
sleep(1);
|
||||
*/
|
||||
}
|
||||
|
||||
2472
php_gearman.c
2472
php_gearman.c
File diff suppressed because it is too large
Load Diff
@@ -33,8 +33,8 @@ if (! is_object($client_new))
|
||||
else
|
||||
echo "gearman_client_clone() pass\n";
|
||||
|
||||
gearman_client_free($client_new);
|
||||
echo "gearman_client_free() pass\n";
|
||||
unset($client_new);
|
||||
echo "unset client pass\n";
|
||||
|
||||
$ret= gearman_client_error($client);
|
||||
if ($ret != GEARMAN_SUCCESS)
|
||||
@@ -54,12 +54,12 @@ if ($ret != 0)
|
||||
else
|
||||
echo "gearman_client_errno() pass\n";
|
||||
|
||||
if (! gearman_client_set_options($client, GEARMAN_CLIENT_UNBUFFERED_RESULT, 1))
|
||||
if (! gearman_client_add_options($client, GEARMAN_CLIENT_UNBUFFERED_RESULT))
|
||||
{
|
||||
echo "gearman_client_set_options() FAILED\n";
|
||||
exit(0);
|
||||
}
|
||||
gearman_client_set_options($client, GEARMAN_CLIENT_UNBUFFERED_RESULT, 0);
|
||||
gearman_client_remove_options($client, GEARMAN_CLIENT_UNBUFFERED_RESULT);
|
||||
echo "gearman_client_set_options() pass\n";
|
||||
|
||||
/*
|
||||
@@ -194,7 +194,7 @@ $res = gearman_client_run_tasks($client);
|
||||
gearman_client_clear_fn($client);
|
||||
|
||||
# You can turn off auto task destruction by unsetting this flag on a gearman client.
|
||||
gearman_client_set_options($client, GEARMAN_CLIENT_FREE_TASKS, 0);
|
||||
gearman_client_remove_options($client, GEARMAN_CLIENT_FREE_TASKS);
|
||||
$task = gearman_client_add_task_background($client, "test_tasks_background", "test_tasks_background", "test_tasks_background");
|
||||
gearman_client_set_status_fn($client, "test_gearman_task_status");
|
||||
$res = gearman_client_run_tasks($client);
|
||||
@@ -255,11 +255,6 @@ gearman_task_fn_arg($task_new);
|
||||
echo "gearman_task_fn_arg() pass\n";
|
||||
*/
|
||||
|
||||
/*
|
||||
gearman_task_free($task);
|
||||
echo "gearman_task_free() pass\n";
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Test Functions
|
||||
@@ -310,10 +305,10 @@ function test_gearman_tasks($task)
|
||||
$is_running= false;
|
||||
|
||||
echo "Testing Task Functions\n";
|
||||
$func = gearman_task_function($task);
|
||||
echo "\tgearman_task_function() pass - $func\n";
|
||||
$uuid = gearman_task_uuid($task);
|
||||
echo "\tgearman_task_uuid() pass - $uuid\n";
|
||||
$func = gearman_task_function_name($task);
|
||||
echo "\tgearman_task_function_name() pass - $func\n";
|
||||
$uuid = gearman_task_unique($task);
|
||||
echo "\tgearman_task_unique() pass - $uuid\n";
|
||||
$job_handle = gearman_task_job_handle($task);
|
||||
echo "\tgearman_task_job_handle() pass - $job_handle\n";
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ if (! is_object($worker_new))
|
||||
else
|
||||
echo "gearman_worker_clone() pass\n";
|
||||
|
||||
gearman_worker_free($worker_new);
|
||||
echo "gearman_worker_free() pass\n";
|
||||
unset($worker_new);
|
||||
echo "unset worker pass\n";
|
||||
|
||||
$ret = gearman_worker_error($worker);
|
||||
if ($ret != GEARMAN_SUCCESS)
|
||||
@@ -205,16 +205,16 @@ function test_gearman_job_complete($job, $data)
|
||||
|
||||
function test_gearman_job_status($job, $data)
|
||||
{
|
||||
gearman_job_data($job, "test data");
|
||||
gearman_job_status($job, 1, 4);
|
||||
gearman_job_send_data($job, "test data");
|
||||
gearman_job_send_status($job, 1, 4);
|
||||
sleep(1);
|
||||
gearman_job_status($job, 2, 4);
|
||||
gearman_job_send_status($job, 2, 4);
|
||||
sleep(1);
|
||||
gearman_job_status($job, 3, 4);
|
||||
gearman_job_send_status($job, 3, 4);
|
||||
sleep(1);
|
||||
gearman_job_status($job, 4, 4);
|
||||
gearman_job_send_status($job, 4, 4);
|
||||
sleep(1);
|
||||
echo "gearman_job_status() pass\n";
|
||||
echo "gearman_send_job_status() pass\n";
|
||||
}
|
||||
|
||||
function test_worker($job, $data=NULL)
|
||||
@@ -238,27 +238,27 @@ function test_gearman_job($job, $data)
|
||||
|
||||
function test_set_callback_fn($job, $data)
|
||||
{
|
||||
gearman_job_status($job, 1, 1);
|
||||
echo "\tgearman_job_status() pass\n";
|
||||
gearman_job_send_status($job, 1, 1);
|
||||
echo "\tgearman_job_send_status() pass\n";
|
||||
sleep(1);
|
||||
gearman_job_warning($job, "test_set_callback_fn warning");
|
||||
echo "\tgearman_job_warning() pass\n";
|
||||
gearman_job_send_warning($job, "test_set_callback_fn warning");
|
||||
echo "\tgearman_job_send_warning() pass\n";
|
||||
sleep(1);
|
||||
gearman_job_exception($job, "test_set_callback_fn exception");
|
||||
echo "\tgearman_job_exception() pass\n";
|
||||
gearman_job_send_exception($job, "test_set_callback_fn exception");
|
||||
echo "\tgearman_job_send_exception() pass\n";
|
||||
sleep(1);
|
||||
/* $job->set_return(GEARMAN_WORK_FAIL); == $job->fail() == */
|
||||
if(! gearman_job_fail($job))
|
||||
echo "\tgearman_job_fail() FAILED\n";
|
||||
if(! gearman_job_send_fail($job))
|
||||
echo "\tgearman_job_send_fail() FAILED\n";
|
||||
else
|
||||
echo "\tgearman_job_fail() pass\n";
|
||||
echo "\tgearman_job_send_fail() pass\n";
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
function test_tasks($job, $data)
|
||||
{
|
||||
$job->data("foobar");
|
||||
gearman_job_status($job, 1, 1);
|
||||
$job->sendData("foobar");
|
||||
gearman_job_send_status($job, 1, 1);
|
||||
sleep(2);
|
||||
return "test_tasks";
|
||||
}
|
||||
@@ -266,9 +266,9 @@ function test_tasks($job, $data)
|
||||
function test_tasks_background($job, $data)
|
||||
{
|
||||
echo "\ttest_tasks_background() pass\n";
|
||||
gearman_job_status($job, 1, 2);
|
||||
gearman_job_send_status($job, 1, 2);
|
||||
sleep(4);
|
||||
gearman_job_status($job, 2, 2);
|
||||
gearman_job_send_status($job, 2, 2);
|
||||
return "done";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user