summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2021-07-23 12:53:43 +0200
committerRemi Collet <remi@remirepo.net>2021-07-23 12:53:43 +0200
commit00e40de4f7feef3f795dfd0c989f2166b4b34063 (patch)
tree4bd880dc43a1df04c7f8a8b96dd868f66843e47a
parent1039103e17fbf1b5ecabd1b337b801526874d216 (diff)
add patch for PHP 8.1.0beta1 from
https://github.com/swoole/swoole-src/pull/4335
-rw-r--r--php-pecl-swoole4.spec10
-rw-r--r--swoole-php81.patch430
2 files changed, 439 insertions, 1 deletions
diff --git a/php-pecl-swoole4.spec b/php-pecl-swoole4.spec
index 2160d67..c5757bd 100644
--- a/php-pecl-swoole4.spec
+++ b/php-pecl-swoole4.spec
@@ -35,13 +35,15 @@
Summary: PHP's asynchronous concurrent distributed networking framework
Name: %{?sub_prefix}php-pecl-%{pecl_name}4
Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}}
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
# Extension is ASL 2.0
# Hiredis is BSD
License: ASL 2.0 and BSD
URL: https://pecl.php.net/package/%{pecl_name}
Source0: https://pecl.php.net/get/%{pecl_name}-%{upstream_version}%{?upstream_prever}.tgz
+Patch0: %{pecl_name}-php81.patch
+
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?dtsprefix}gcc-c++
@@ -163,6 +165,8 @@ sed \
cd NTS
+%patch0 -p1
+
# Sanity check, really often broken
extver=$(sed -n '/#define SWOOLE_VERSION /{s/.* "//;s/".*$//;p}' include/swoole_version.h)
if test "x${extver}" != "x%{upstream_version}%{?upstream_prever}"; then
@@ -330,6 +334,10 @@ cd ../ZTS
%changelog
+* Fri Jul 23 2021 Remi Collet <remi@remirepo.net> - 4.7.0-2
+- add patch for PHP 8.1.0beta1 from
+ https://github.com/swoole/swoole-src/pull/4335
+
* Mon Jul 19 2021 Remi Collet <remi@remirepo.net> - 4.7.0-1
- update to 4.7.0
diff --git a/swoole-php81.patch b/swoole-php81.patch
new file mode 100644
index 0000000..7e7d1bf
--- /dev/null
+++ b/swoole-php81.patch
@@ -0,0 +1,430 @@
+From e52686db285ea506c90a5af4f38664b5b4027a8e Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Fri, 23 Jul 2021 12:43:52 +0200
+Subject: [PATCH] Fix not serializable classes for 8.1.0beta1
+
+---
+ ext-src/php_swoole_private.h | 11 ++++++++---
+ ext-src/swoole_atomic.cc | 4 ++--
+ ext-src/swoole_channel_coro.cc | 2 +-
+ ext-src/swoole_client.cc | 2 +-
+ ext-src/swoole_client_coro.cc | 2 +-
+ ext-src/swoole_coroutine_scheduler.cc | 2 +-
+ ext-src/swoole_http2_client_coro.cc | 6 +++---
+ ext-src/swoole_http_client_coro.cc | 2 +-
+ ext-src/swoole_http_request.cc | 2 +-
+ ext-src/swoole_http_response.cc | 2 +-
+ ext-src/swoole_http_server.cc | 2 +-
+ ext-src/swoole_http_server_coro.cc | 2 +-
+ ext-src/swoole_lock.cc | 2 +-
+ ext-src/swoole_mysql_coro.cc | 6 +++---
+ ext-src/swoole_process.cc | 2 +-
+ ext-src/swoole_process_pool.cc | 2 +-
+ ext-src/swoole_redis_coro.cc | 2 +-
+ ext-src/swoole_redis_server.cc | 2 +-
+ ext-src/swoole_server.cc | 6 +++---
+ ext-src/swoole_server_port.cc | 2 +-
+ ext-src/swoole_socket_coro.cc | 2 +-
+ ext-src/swoole_table.cc | 2 +-
+ ext-src/swoole_websocket_server.cc | 2 +-
+ thirdparty/php/curl/interface.cc | 2 +-
+ thirdparty/php/curl/multi.cc | 4 ++--
+ 25 files changed, 40 insertions(+), 35 deletions(-)
+
+diff --git a/ext-src/php_swoole_private.h b/ext-src/php_swoole_private.h
+index c6af140254..b16ec0fb21 100644
+--- a/ext-src/php_swoole_private.h
++++ b/ext-src/php_swoole_private.h
+@@ -634,9 +634,14 @@ static sw_inline void add_assoc_ulong_safe(zval *arg, const char *key, zend_ulon
+ } \
+ } while (0)
+
+-#define SW_SET_CLASS_SERIALIZABLE(module, _serialize, _unserialize) \
+- module##_ce->serialize = _serialize; \
+- module##_ce->unserialize = _unserialize
++#if PHP_VERSION_ID < 80100
++#define SW_SET_CLASS_NOT_SERIALIZABLE(module) \
++ module##_ce->serialize = zend_class_serialize_deny; \
++ module##_ce->unserialize = zend_class_unserialize_deny;
++#else
++#define SW_SET_CLASS_NOT_SERIALIZABLE(module) \
++ module##_ce->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
++#endif
+
+ #define sw_zend_class_clone_deny NULL
+ #define SW_SET_CLASS_CLONEABLE(module, _clone_obj) module##_handlers.clone_obj = _clone_obj
+diff --git a/ext-src/swoole_atomic.cc b/ext-src/swoole_atomic.cc
+index ad6be3ec38..54bcf1f43c 100644
+--- a/ext-src/swoole_atomic.cc
++++ b/ext-src/swoole_atomic.cc
+@@ -244,7 +244,7 @@ static const zend_function_entry swoole_atomic_long_methods[] =
+
+ void php_swoole_atomic_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_atomic, "Swoole\\Atomic", "swoole_atomic", nullptr, swoole_atomic_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_atomic, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_atomic);
+ SW_SET_CLASS_CLONEABLE(swoole_atomic, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_atomic, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+@@ -252,7 +252,7 @@ void php_swoole_atomic_minit(int module_number) {
+
+ SW_INIT_CLASS_ENTRY(
+ swoole_atomic_long, "Swoole\\Atomic\\Long", "swoole_atomic_long", nullptr, swoole_atomic_long_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_atomic_long, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_atomic_long);
+ SW_SET_CLASS_CLONEABLE(swoole_atomic_long, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_atomic_long, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_atomic_long,
+diff --git a/ext-src/swoole_channel_coro.cc b/ext-src/swoole_channel_coro.cc
+index 8c5ebee4c2..28f7165aad 100644
+--- a/ext-src/swoole_channel_coro.cc
++++ b/ext-src/swoole_channel_coro.cc
+@@ -120,7 +120,7 @@ static zend_object *php_swoole_channel_coro_create_object(zend_class_entry *ce)
+ void php_swoole_channel_coro_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_channel_coro, "Swoole\\Coroutine\\Channel", nullptr, "Co\\Channel", swoole_channel_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_channel_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_channel_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_channel_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_channel_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_channel_coro,
+diff --git a/ext-src/swoole_client.cc b/ext-src/swoole_client.cc
+index 21e8e7c4ff..ff414733b8 100644
+--- a/ext-src/swoole_client.cc
++++ b/ext-src/swoole_client.cc
+@@ -240,7 +240,7 @@ static const zend_function_entry swoole_client_methods[] =
+
+ void php_swoole_client_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_client, "Swoole\\Client", "swoole_client", nullptr, swoole_client_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_client, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_client);
+ SW_SET_CLASS_CLONEABLE(swoole_client, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_client, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+diff --git a/ext-src/swoole_client_coro.cc b/ext-src/swoole_client_coro.cc
+index 45746a42bc..312cda9f17 100644
+--- a/ext-src/swoole_client_coro.cc
++++ b/ext-src/swoole_client_coro.cc
+@@ -169,7 +169,7 @@ static zend_object *php_swoole_client_coro_create_object(zend_class_entry *ce) {
+ void php_swoole_client_coro_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_client_coro, "Swoole\\Coroutine\\Client", nullptr, "Co\\Client", swoole_client_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_client_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_client_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_client_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_client_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+diff --git a/ext-src/swoole_coroutine_scheduler.cc b/ext-src/swoole_coroutine_scheduler.cc
+index e39a9cf74f..f735fce1b8 100644
+--- a/ext-src/swoole_coroutine_scheduler.cc
++++ b/ext-src/swoole_coroutine_scheduler.cc
+@@ -111,7 +111,7 @@ void php_swoole_coroutine_scheduler_minit(int module_number) {
+ nullptr,
+ "Co\\Scheduler",
+ swoole_coroutine_scheduler_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_coroutine_scheduler, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_coroutine_scheduler);
+ SW_SET_CLASS_CLONEABLE(swoole_coroutine_scheduler, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_coroutine_scheduler, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_coroutine_scheduler);
+diff --git a/ext-src/swoole_http2_client_coro.cc b/ext-src/swoole_http2_client_coro.cc
+index 8417c729ee..7a3b3dc934 100644
+--- a/ext-src/swoole_http2_client_coro.cc
++++ b/ext-src/swoole_http2_client_coro.cc
+@@ -317,7 +317,7 @@ void php_swoole_http2_client_coro_minit(int module_number) {
+ nullptr,
+ "Co\\Http2\\Client",
+ swoole_http2_client_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http2_client_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http2_client_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_http2_client_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http2_client_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_http2_client_coro,
+@@ -334,13 +334,13 @@ void php_swoole_http2_client_coro_minit(int module_number) {
+ swoole_exception);
+
+ SW_INIT_CLASS_ENTRY(swoole_http2_request, "Swoole\\Http2\\Request", "swoole_http2_request", nullptr, nullptr);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http2_request, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http2_request);
+ SW_SET_CLASS_CLONEABLE(swoole_http2_request, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http2_request, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_http2_request);
+
+ SW_INIT_CLASS_ENTRY(swoole_http2_response, "Swoole\\Http2\\Response", "swoole_http2_response", nullptr, nullptr);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http2_response, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http2_response);
+ SW_SET_CLASS_CLONEABLE(swoole_http2_response, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http2_response, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_http2_response);
+diff --git a/ext-src/swoole_http_client_coro.cc b/ext-src/swoole_http_client_coro.cc
+index 34c2bfcca9..cf7c7fa825 100644
+--- a/ext-src/swoole_http_client_coro.cc
++++ b/ext-src/swoole_http_client_coro.cc
+@@ -1712,7 +1712,7 @@ void php_swoole_http_client_coro_minit(int module_number) {
+ nullptr,
+ "Co\\Http\\Client",
+ swoole_http_client_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http_client_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http_client_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_http_client_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http_client_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_http_client_coro,
+diff --git a/ext-src/swoole_http_request.cc b/ext-src/swoole_http_request.cc
+index 4f4ca4e3f6..218bfcc175 100644
+--- a/ext-src/swoole_http_request.cc
++++ b/ext-src/swoole_http_request.cc
+@@ -225,7 +225,7 @@ const zend_function_entry swoole_http_request_methods[] =
+ void php_swoole_http_request_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_http_request, "Swoole\\Http\\Request", "swoole_http_request", nullptr, swoole_http_request_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http_request, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http_request);
+ SW_SET_CLASS_CLONEABLE(swoole_http_request, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http_request, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_http_request,
+diff --git a/ext-src/swoole_http_response.cc b/ext-src/swoole_http_response.cc
+index f8edb299b2..a908e5d4f3 100644
+--- a/ext-src/swoole_http_response.cc
++++ b/ext-src/swoole_http_response.cc
+@@ -263,7 +263,7 @@ const zend_function_entry swoole_http_response_methods[] =
+ void php_swoole_http_response_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_http_response, "Swoole\\Http\\Response", "swoole_http_response", nullptr, swoole_http_response_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http_response, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http_response);
+ SW_SET_CLASS_CLONEABLE(swoole_http_response, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http_response, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_http_response,
+diff --git a/ext-src/swoole_http_server.cc b/ext-src/swoole_http_server.cc
+index 0d71470e92..730667782d 100644
+--- a/ext-src/swoole_http_server.cc
++++ b/ext-src/swoole_http_server.cc
+@@ -147,7 +147,7 @@ int php_swoole_http_server_onReceive(Server *serv, RecvData *req) {
+ void php_swoole_http_server_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY_EX(
+ swoole_http_server, "Swoole\\Http\\Server", "swoole_http_server", nullptr, nullptr, swoole_server);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http_server, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http_server);
+ SW_SET_CLASS_CLONEABLE(swoole_http_server, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http_server, sw_zend_class_unset_property_deny);
+ }
+diff --git a/ext-src/swoole_http_server_coro.cc b/ext-src/swoole_http_server_coro.cc
+index 78a6381112..7d7edf834a 100644
+--- a/ext-src/swoole_http_server_coro.cc
++++ b/ext-src/swoole_http_server_coro.cc
+@@ -302,7 +302,7 @@ void php_swoole_http_server_coro_minit(int module_number) {
+ nullptr,
+ "Co\\Http\\Server",
+ swoole_http_server_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_http_server_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_http_server_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_http_server_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_http_server_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_http_server_coro);
+diff --git a/ext-src/swoole_lock.cc b/ext-src/swoole_lock.cc
+index 3420dda1de..075f624c89 100644
+--- a/ext-src/swoole_lock.cc
++++ b/ext-src/swoole_lock.cc
+@@ -113,7 +113,7 @@ static const zend_function_entry swoole_lock_methods[] =
+
+ void php_swoole_lock_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_lock, "Swoole\\Lock", "swoole_lock", nullptr, swoole_lock_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_lock, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_lock);
+ SW_SET_CLASS_CLONEABLE(swoole_lock, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_lock, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+diff --git a/ext-src/swoole_mysql_coro.cc b/ext-src/swoole_mysql_coro.cc
+index ff1b115948..574e9c028b 100644
+--- a/ext-src/swoole_mysql_coro.cc
++++ b/ext-src/swoole_mysql_coro.cc
+@@ -1690,7 +1690,7 @@ static sw_inline void swoole_mysql_coro_sync_execute_result_properties(zval *zob
+
+ void php_swoole_mysql_coro_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_mysql_coro, "Swoole\\Coroutine\\MySQL", nullptr, "Co\\MySQL", swoole_mysql_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_mysql_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_mysql_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_mysql_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_mysql_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+@@ -1701,7 +1701,7 @@ void php_swoole_mysql_coro_minit(int module_number) {
+ nullptr,
+ "Co\\MySQL\\Statement",
+ swoole_mysql_coro_statement_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_mysql_coro_statement, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_mysql_coro_statement);
+ SW_SET_CLASS_CLONEABLE(swoole_mysql_coro_statement, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_mysql_coro_statement, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_mysql_coro_statement,
+@@ -1716,7 +1716,7 @@ void php_swoole_mysql_coro_minit(int module_number) {
+ "Co\\MySQL\\Exception",
+ nullptr,
+ swoole_exception);
+- SW_SET_CLASS_SERIALIZABLE(swoole_mysql_coro_exception, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_mysql_coro_exception);
+ SW_SET_CLASS_CLONEABLE(swoole_mysql_coro_exception, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_mysql_coro_exception, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_mysql_coro_exception);
+diff --git a/ext-src/swoole_process.cc b/ext-src/swoole_process.cc
+index 91ee369517..46a8298ebc 100644
+--- a/ext-src/swoole_process.cc
++++ b/ext-src/swoole_process.cc
+@@ -258,7 +258,7 @@ static const zend_function_entry swoole_process_methods[] =
+
+ void php_swoole_process_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_process, "Swoole\\Process", "swoole_process", nullptr, swoole_process_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_process, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_process);
+ SW_SET_CLASS_CLONEABLE(swoole_process, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_process, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+diff --git a/ext-src/swoole_process_pool.cc b/ext-src/swoole_process_pool.cc
+index eda655823c..c13a7d3ad6 100644
+--- a/ext-src/swoole_process_pool.cc
++++ b/ext-src/swoole_process_pool.cc
+@@ -189,7 +189,7 @@ static const zend_function_entry swoole_process_pool_methods[] =
+ void php_swoole_process_pool_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_process_pool, "Swoole\\Process\\Pool", "swoole_process_pool", nullptr, swoole_process_pool_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_process_pool, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_process_pool);
+ SW_SET_CLASS_CLONEABLE(swoole_process_pool, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_process_pool, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_process_pool,
+diff --git a/ext-src/swoole_redis_coro.cc b/ext-src/swoole_redis_coro.cc
+index 174201246c..343dad1053 100644
+--- a/ext-src/swoole_redis_coro.cc
++++ b/ext-src/swoole_redis_coro.cc
+@@ -1895,7 +1895,7 @@ static const zend_function_entry swoole_redis_coro_methods[] =
+
+ void php_swoole_redis_coro_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_redis_coro, "Swoole\\Coroutine\\Redis", nullptr, "Co\\Redis", swoole_redis_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_redis_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_redis_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_redis_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_redis_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CREATE_WITH_ITS_OWN_HANDLERS(swoole_redis_coro);
+diff --git a/ext-src/swoole_redis_server.cc b/ext-src/swoole_redis_server.cc
+index eb144ef948..69f1dd1e06 100644
+--- a/ext-src/swoole_redis_server.cc
++++ b/ext-src/swoole_redis_server.cc
+@@ -71,7 +71,7 @@ void php_swoole_redis_server_minit(int module_number) {
+ nullptr,
+ swoole_redis_server_methods,
+ swoole_server);
+- SW_SET_CLASS_SERIALIZABLE(swoole_redis_server, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_redis_server);
+ SW_SET_CLASS_CLONEABLE(swoole_redis_server, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_redis_server, sw_zend_class_unset_property_deny);
+
+diff --git a/ext-src/swoole_server.cc b/ext-src/swoole_server.cc
+index 3824e860e4..3ab5a037bd 100644
+--- a/ext-src/swoole_server.cc
++++ b/ext-src/swoole_server.cc
+@@ -608,7 +608,7 @@ static const zend_function_entry swoole_server_task_methods[] =
+ void php_swoole_server_minit(int module_number) {
+ // ---------------------------------------Server-------------------------------------
+ SW_INIT_CLASS_ENTRY(swoole_server, "Swoole\\Server", "swoole_server", nullptr, swoole_server_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_server, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_server);
+ SW_SET_CLASS_CLONEABLE(swoole_server, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_server, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_server, server_create_object, server_free_object, ServerObject, std);
+@@ -623,7 +623,7 @@ void php_swoole_server_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_server_task, "Swoole\\Server\\Task", "swoole_server_task", nullptr, swoole_server_task_methods);
+ swoole_server_task_ce->ce_flags |= ZEND_ACC_FINAL;
+- SW_SET_CLASS_SERIALIZABLE(swoole_server_task, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_server_task);
+ SW_SET_CLASS_CLONEABLE(swoole_server_task, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_server_task, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_server_task,
+@@ -673,7 +673,7 @@ void php_swoole_server_minit(int module_number) {
+ "swoole_connection_iterator",
+ nullptr,
+ swoole_connection_iterator_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_connection_iterator, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_connection_iterator);
+ SW_SET_CLASS_CLONEABLE(swoole_connection_iterator, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_connection_iterator, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_connection_iterator,
+diff --git a/ext-src/swoole_server_port.cc b/ext-src/swoole_server_port.cc
+index d657150ac9..b22ab7847f 100644
+--- a/ext-src/swoole_server_port.cc
++++ b/ext-src/swoole_server_port.cc
+@@ -166,7 +166,7 @@ const zend_function_entry swoole_server_port_methods[] =
+ void php_swoole_server_port_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_server_port, "Swoole\\Server\\Port", "swoole_server_port", nullptr, swoole_server_port_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_server_port, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_server_port);
+ SW_SET_CLASS_CLONEABLE(swoole_server_port, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_server_port, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_server_port,
+diff --git a/ext-src/swoole_socket_coro.cc b/ext-src/swoole_socket_coro.cc
+index 4054781e80..e3799f4566 100644
+--- a/ext-src/swoole_socket_coro.cc
++++ b/ext-src/swoole_socket_coro.cc
+@@ -803,7 +803,7 @@ static void swoole_socket_coro_register_constants(int module_number) {
+ void php_swoole_socket_coro_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(
+ swoole_socket_coro, "Swoole\\Coroutine\\Socket", nullptr, "Co\\Socket", swoole_socket_coro_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_socket_coro, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_socket_coro);
+ SW_SET_CLASS_CLONEABLE(swoole_socket_coro, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_socket_coro, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_socket_coro,
+diff --git a/ext-src/swoole_table.cc b/ext-src/swoole_table.cc
+index eb3949594c..9effa63828 100644
+--- a/ext-src/swoole_table.cc
++++ b/ext-src/swoole_table.cc
+@@ -220,7 +220,7 @@ static const zend_function_entry swoole_table_methods[] =
+
+ void php_swoole_table_minit(int module_number) {
+ SW_INIT_CLASS_ENTRY(swoole_table, "Swoole\\Table", "swoole_table", nullptr, swoole_table_methods);
+- SW_SET_CLASS_SERIALIZABLE(swoole_table, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_table);
+ SW_SET_CLASS_CLONEABLE(swoole_table, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_table, sw_zend_class_unset_property_deny);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+diff --git a/ext-src/swoole_websocket_server.cc b/ext-src/swoole_websocket_server.cc
+index 55435e9334..6cf7671631 100644
+--- a/ext-src/swoole_websocket_server.cc
++++ b/ext-src/swoole_websocket_server.cc
+@@ -628,7 +628,7 @@ void php_swoole_websocket_server_minit(int module_number) {
+ nullptr,
+ swoole_websocket_server_methods,
+ swoole_http_server);
+- SW_SET_CLASS_SERIALIZABLE(swoole_websocket_server, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_websocket_server);
+ SW_SET_CLASS_CLONEABLE(swoole_websocket_server, sw_zend_class_clone_deny);
+ SW_SET_CLASS_UNSET_PROPERTY_HANDLER(swoole_websocket_server, sw_zend_class_unset_property_deny);
+
+diff --git a/thirdparty/php/curl/interface.cc b/thirdparty/php/curl/interface.cc
+index b5817fd2d3..8db261760e 100644
+--- a/thirdparty/php/curl/interface.cc
++++ b/thirdparty/php/curl/interface.cc
+@@ -315,7 +315,7 @@ void swoole_native_curl_minit(int module_number) {
+ #if PHP_VERSION_ID >= 80000
+ SW_INIT_CLASS_ENTRY(
+ swoole_coroutine_curl_handle, "Swoole\\Coroutine\\Curl\\Handle", nullptr, "Co\\Curl\\Handle", nullptr);
+- SW_SET_CLASS_SERIALIZABLE(swoole_coroutine_curl_handle, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(swoole_coroutine_curl_handle);
+ SW_SET_CLASS_CUSTOM_OBJECT(swoole_coroutine_curl_handle, curl_create_object, curl_free_obj, php_curl, std);
+ swoole_coroutine_curl_handle_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+ swoole_coroutine_curl_handle_handlers.get_gc = curl_get_gc;
+diff --git a/thirdparty/php/curl/multi.cc b/thirdparty/php/curl/multi.cc
+index 6561af5b98..cbca9c515b 100644
+--- a/thirdparty/php/curl/multi.cc
++++ b/thirdparty/php/curl/multi.cc
+@@ -694,8 +694,8 @@ void curl_multi_register_class(const zend_function_entry *method_entries) {
+ nullptr,
+ "Co\\Curl\\MultiHandle",
+ nullptr);
+- SW_SET_CLASS_SERIALIZABLE(
+- swoole_coroutine_curl_multi_handle, zend_class_serialize_deny, zend_class_unserialize_deny);
++ SW_SET_CLASS_NOT_SERIALIZABLE(
++ swoole_coroutine_curl_multi_handle);
+ SW_SET_CLASS_CUSTOM_OBJECT(
+ swoole_coroutine_curl_multi_handle, curl_multi_create_object, curl_multi_free_obj, php_curlm, std);
+ swoole_coroutine_curl_multi_handle_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;