Skip to content

Commit 2b861f9

Browse files
author
Mikko Koppanen
committed
Merge pull request #98 from mkoppanen/feature-server
Added libmemcachedprotocol support
2 parents 368dd3c + e56d2d4 commit 2b861f9

13 files changed

+1536
-45
lines changed

Diff for: .travis.yml

+3-36
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
language: php
22
php:
33
- 5.5
4-
#- 5.4
5-
#- 5.3
4+
- 5.4
5+
- 5.3
66
env:
77
- LIBMEMCACHED_VERSION=1.0.17
88
- LIBMEMCACHED_VERSION=1.0.16
@@ -14,38 +14,5 @@ env:
1414
- LIBMEMCACHED_VERSION=0.53
1515
- LIBMEMCACHED_VERSION=0.44
1616

17-
before_script:
18-
- for file in tests/*.phpt; do grep $(basename $file) package.xml >/dev/null || (echo "Missing $file from package.xml" ; exit 1); done
19-
- wget "https://launchpad.net/libmemcached/1.0/${LIBMEMCACHED_VERSION}/+download/libmemcached-${LIBMEMCACHED_VERSION}.tar.gz"
20-
- tar xvfz libmemcached-${LIBMEMCACHED_VERSION}.tar.gz
21-
- cd libmemcached-${LIBMEMCACHED_VERSION}
22-
- ./configure --prefix="${HOME}/libmemcached-${LIBMEMCACHED_VERSION}" LDFLAGS="-lpthread"
23-
- make
24-
- make install
25-
- cd ..
26-
- git clone https://github.com/igbinary/igbinary.git
27-
- cd igbinary
28-
- phpize
29-
- ./configure
30-
- make
31-
- make install
32-
- cd ..
33-
34-
3517
script:
36-
- export PHP_MEMCACHED_VERSION=$(php -r '$sxe = simplexml_load_file ("package.xml"); echo (string) $sxe->version->release;')
37-
- pear package
38-
- mkdir /tmp/php-memcached-build
39-
- tar xfz "memcached-${PHP_MEMCACHED_VERSION}.tgz" -C /tmp/php-memcached-build
40-
- cd /tmp/php-memcached-build/memcached-${PHP_MEMCACHED_VERSION}
41-
- phpize
42-
- ./configure --with-libmemcached-dir="${HOME}/libmemcached-${LIBMEMCACHED_VERSION}" --enable-memcached-json --enable-memcached-igbinary
43-
- make
44-
- make install
45-
- export NO_INTERACTION=1
46-
- export REPORT_EXIT_STATUS=1
47-
- export TEST_PHP_EXECUTABLE=`which php`
48-
- php run-tests.php -d extension=memcached.so -d extension=igbinary.so -n ./tests/*.phpt
49-
- for i in `ls tests/*.out 2>/dev/null`; do echo "-- START ${i}"; cat $i; echo ""; echo "-- END"; done
50-
51-
18+
- ./travis.sh $LIBMEMCACHED_VERSION

Diff for: ChangeLog

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Version 2.2.0b1
1616
- memcached.sess_randomize_replica_read
1717
- memcached.sess_remove_failed
1818
- memcached.sess_connect_timeout
19+
* Added support for memcached protocol handlers
20+
* Added Memcached::setBucket for virtual bucket support
1921

2022
Version 2.1.0
2123
-------------

Diff for: config.m4

+66-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ PHP_ARG_ENABLE(memcached-json, whether to enable memcached json serializer suppo
2020
PHP_ARG_ENABLE(memcached-sasl, whether to disable memcached sasl support,
2121
[ --disable-memcached-sasl Disable memcached sasl support], yes, no)
2222

23+
PHP_ARG_ENABLE(memcached-protocol, whether to enable memcached protocol support,
24+
[ --enable-memcached-protocol Enable memcached protocoll support], no, no)
25+
2326
if test -z "$PHP_ZLIB_DIR"; then
2427
PHP_ARG_WITH(zlib-dir, for ZLIB,
2528
[ --with-zlib-dir[=DIR] Set the path to ZLIB install prefix.], no)
@@ -337,15 +340,75 @@ if test "$PHP_MEMCACHED" != "no"; then
337340
AC_DEFINE(HAVE_LIBMEMCACHED_TOUCH, [1], [Whether memcached_touch is defined])
338341
fi
339342

340-
PHP_SUBST(MEMCACHED_SHARED_LIBADD)
341-
342343
PHP_MEMCACHED_FILES="php_memcached.c php_libmemcached_compat.c fastlz/fastlz.c g_fmt.c"
343344

344345
if test "$PHP_MEMCACHED_SESSION" != "no"; then
345346
PHP_MEMCACHED_FILES="${PHP_MEMCACHED_FILES} php_memcached_session.c"
346347
fi
347348

348-
PHP_NEW_EXTENSION(memcached, $PHP_MEMCACHED_FILES, $ext_shared,,$SESSION_INCLUDES $IGBINARY_INCLUDES)
349+
LIBEVENT_INCLUDES=""
350+
AC_MSG_CHECKING([for memcached protocol support])
351+
if test "$PHP_MEMCACHED_PROTOCOL" != "no"; then
352+
AC_MSG_RESULT([enabled])
353+
354+
AC_MSG_CHECKING([for libmemcachedprotocol])
355+
if test "$PHP_LIBMEMCACHED_DIR" != "no" && test "$PHP_LIBMEMCACHED_DIR" != "yes"; then
356+
if ! test -r "$PHP_LIBMEMCACHED_DIR/include/libmemcachedprotocol-0.0/handler.h"; then
357+
AC_MSG_ERROR([Can't find libmemcachedprotocol headers under "$PHP_LIBMEMCACHED_DIR"])
358+
fi
359+
fi
360+
AC_MSG_RESULT([found])
361+
362+
ORIG_CFLAGS="$CFLAGS"
363+
CFLAGS="$CFLAGS -I$PHP_LIBMEMCACHED_INCDIR"
364+
365+
AC_CACHE_CHECK([whether libmemcachedprotocol is usable], ac_cv_have_libmemcachedprotocol, [
366+
AC_TRY_COMPILE(
367+
[ #include <libmemcachedprotocol-0.0/handler.h> ],
368+
[ memcached_binary_protocol_callback_st s_test_impl;
369+
s_test_impl.interface.v1.delete_object = 0;
370+
],
371+
[ ac_cv_have_libmemcachedprotocol="yes" ],
372+
[ ac_cv_have_libmemcachedprotocol="no" ]
373+
)
374+
])
375+
CFLAGS="$ORIG_CFLAGS"
376+
377+
if test "$ac_cv_have_libmemcachedprotocol" != "yes"; then
378+
AC_MSG_ERROR([Cannot enable libmemcached protocol])
379+
fi
380+
381+
PHP_ADD_LIBRARY_WITH_PATH(memcachedprotocol, $PHP_LIBMEMCACHED_DIR/$PHP_LIBDIR, MEMCACHED_SHARED_LIBADD)
382+
383+
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
384+
if test "x$PKG_CONFIG" = "xno"; then
385+
AC_MSG_RESULT([pkg-config not found])
386+
AC_MSG_ERROR([Please reinstall the pkg-config distribution])
387+
fi
388+
389+
AC_MSG_CHECKING([for libevent])
390+
if $PKG_CONFIG --exists libevent; then
391+
PHP_MEMCACHED_LIBEVENT_VERSION=`$PKG_CONFIG libevent --modversion`
392+
PHP_MEMCACHED_LIBEVENT_PREFIX=`$PKG_CONFIG libevent --variable=prefix`
393+
394+
AC_MSG_RESULT([found version $PHP_MEMCACHED_LIBEVENT_VERSION, under $PHP_MEMCACHED_LIBEVENT_PREFIX])
395+
LIBEVENT_LIBS=`$PKG_CONFIG libevent --libs`
396+
LIBEVENT_INCLUDES=`$PKG_CONFIG libevent --cflags`
397+
398+
PHP_EVAL_LIBLINE($LIBEVENT_LIBS, MEMCACHED_SHARED_LIBADD)
399+
PHP_EVAL_INCLINE($LIBEVENT_INCLUDES)
400+
else
401+
AC_MSG_ERROR(Unable to find libevent installation)
402+
fi
403+
PHP_MEMCACHED_FILES="${PHP_MEMCACHED_FILES} php_memcached_server.c"
404+
AC_DEFINE(HAVE_MEMCACHED_PROTOCOL,1,[Whether memcached protocol is enabled])
405+
else
406+
AC_MSG_RESULT([disabled])
407+
fi
408+
409+
PHP_SUBST(MEMCACHED_SHARED_LIBADD)
410+
411+
PHP_NEW_EXTENSION(memcached, $PHP_MEMCACHED_FILES, $ext_shared,,$SESSION_INCLUDES $IGBINARY_INCLUDES $LIBEVENT_INCLUDES)
349412
PHP_ADD_BUILD_DIR($ext_builddir/fastlz, 1)
350413

351414
ifdef([PHP_ADD_EXTENSION_DEP],

Diff for: package.xml

+6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
4646
* memcached.sess_randomize_replica_read
4747
* memcached.sess_remove_failed
4848
* memcached.sess_connect_timeout
49+
- Added support for memcached protocol handlers
50+
- Added Memcached::setBucket for virtual bucket support
4951
</notes>
5052
<contents>
5153
<dir name="/">
@@ -64,6 +66,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
6466
<file role='src' name='php_memcached_session.h'/>
6567
<file role='src' name='php_libmemcached_compat.h'/>
6668
<file role='src' name='php_libmemcached_compat.c'/>
69+
<file role='src' name='php_memcached_server.h'/>
70+
<file role='src' name='php_memcached_server.c'/>
6771
<file role='src' name='g_fmt.c'/>
6872
<file role='src' name='g_fmt.h'/>
6973
<file role='src' name='fastlz/fastlz.c'/>
@@ -117,6 +121,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
117121
<file role='test' name='types_multi.phpt'/>
118122
<file role='test' name='undefined_set.phpt'/>
119123
<file role='test' name='vbucket.phpt'/>
124+
<file role='test' name='user-flags.phpt'/>
125+
<file role='test' name='gh_93.phpt'/>
120126
<file role='test' name='testdata.res'/>
121127
<file role='test' name='config.inc'/>
122128
</dir>

0 commit comments

Comments
 (0)