Skip to content

Commit d22770d

Browse files
committed
try fix
1 parent 3f2e960 commit d22770d

File tree

4 files changed

+28
-20
lines changed

4 files changed

+28
-20
lines changed

examples/curl/hook.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
Co::set(['hook_flags' => SWOOLE_HOOK_ALL | SWOOLE_HOOK_NATIVE_CURL, ]);
33
//Co::set(['hook_flags' => SWOOLE_HOOK_ALL, ]);
4-
4+
$n = empty($argv[1]) ? 3 : intval($argv[1]);
55
Co\run(function () {
66
$n = 3;
77
while($n--) {

tests/swoole_feature/cross_close/stream.phpt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@ swoole_feature/cross_close: stream
55
--FILE--
66
<?php
77
require __DIR__ . '/../../include/bootstrap.php';
8+
9+
use function Swoole\Coroutine\run;
10+
use function Swoole\Coroutine\go;
11+
use Swoole\Coroutine\System;
12+
813
Swoole\Runtime::enableCoroutine();
9-
go(function () {
14+
run(function () {
1015
$fp = stream_socket_client('tcp://' . REDIS_SERVER_HOST . ':' . REDIS_SERVER_PORT, $errno, $errstr, 1);
1116
if (!$fp) {
1217
exit("$errstr ($errno)\n");
1318
} else {
1419
go(function () use ($fp) {
15-
co::sleep(0.001);
20+
System::sleep(0.001);
1621
echo "CLOSE\n";
1722
fclose($fp);
1823
echo "DONE\n";

thirdparty/php/curl/interface.cc

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ int swoole_curl_get_le_curl() {
9393
int swoole_curl_get_le_curl_multi() {
9494
return le_curl_multi_handle;
9595
}
96-
96+
#else
97+
extern zend_class_entry *curl_ce;
9798
#endif
9899

99100
#define CAAL(s, v) add_assoc_long_ex(return_value, s, sizeof(s) - 1, (zend_long) v);
@@ -300,11 +301,11 @@ zend_class_entry *swoole_coroutine_curl_handle_ce;
300301
zend_class_entry *curl_share_ce;
301302
static zend_object_handlers swoole_coroutine_curl_handle_handlers;
302303

303-
static zend_object *curl_create_object(zend_class_entry *class_type);
304-
static void curl_free_obj(zend_object *object);
305-
static HashTable *curl_get_gc(zend_object *object, zval **table, int *n);
306-
static zend_function *curl_get_constructor(zend_object *object);
307-
static zend_object *curl_clone_obj(zend_object *object);
304+
static zend_object *swoole_curl_create_object(zend_class_entry *class_type);
305+
static void swoole_curl_free_obj(zend_object *object);
306+
static HashTable *swoole_curl_get_gc(zend_object *object, zval **table, int *n);
307+
static zend_function *swoole_curl_get_constructor(zend_object *object);
308+
static zend_object *swoole_curl_clone_obj(zend_object *object);
308309
#endif
309310

310311
static inline int build_mime_structure_from_hash(php_curl *ch, zval *zpostfields);
@@ -316,18 +317,18 @@ void swoole_native_curl_minit(int module_number) {
316317
SW_INIT_CLASS_ENTRY(
317318
swoole_coroutine_curl_handle, "Swoole\\Coroutine\\Curl\\Handle", nullptr, "Co\\Curl\\Handle", nullptr);
318319
SW_SET_CLASS_SERIALIZABLE(swoole_coroutine_curl_handle, zend_class_serialize_deny, zend_class_unserialize_deny);
319-
SW_SET_CLASS_CUSTOM_OBJECT(swoole_coroutine_curl_handle, curl_create_object, curl_free_obj, php_curl, std);
320+
SW_SET_CLASS_CUSTOM_OBJECT(swoole_coroutine_curl_handle, swoole_curl_create_object, swoole_curl_free_obj, php_curl, std);
320321
swoole_coroutine_curl_handle_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
321-
swoole_coroutine_curl_handle_handlers.get_gc = curl_get_gc;
322-
swoole_coroutine_curl_handle_handlers.get_constructor = curl_get_constructor;
323-
swoole_coroutine_curl_handle_handlers.clone_obj = curl_clone_obj;
322+
swoole_coroutine_curl_handle_ce->parent = curl_ce;
323+
swoole_coroutine_curl_handle_handlers.get_gc = swoole_curl_get_gc;
324+
swoole_coroutine_curl_handle_handlers.get_constructor = swoole_curl_get_constructor;
325+
swoole_coroutine_curl_handle_handlers.clone_obj = swoole_curl_clone_obj;
324326
swoole_coroutine_curl_handle_handlers.cast_object = curl_cast_object;
325327

326328
curl_multi_register_class(nullptr);
327329

328330
zend_unregister_functions(swoole_native_curl_functions, -1, CG(function_table));
329331
zend_register_functions(NULL, swoole_native_curl_functions, NULL, MODULE_PERSISTENT);
330-
331332
#else
332333
le_curl = zend_register_list_destructors_ex(swoole_curl_close, NULL, le_curl_name, module_number);
333334
le_curl_multi_handle =
@@ -345,7 +346,7 @@ void swoole_native_curl_minit(int module_number) {
345346
/* CurlHandle class */
346347

347348
#if PHP_VERSION_ID >= 80000
348-
static zend_object *curl_create_object(zend_class_entry *class_type) {
349+
static zend_object *swoole_curl_create_object(zend_class_entry *class_type) {
349350
php_curl *intern = (php_curl *) zend_object_alloc(sizeof(php_curl), class_type);
350351

351352
zend_object_std_init(&intern->std, class_type);
@@ -355,19 +356,19 @@ static zend_object *curl_create_object(zend_class_entry *class_type) {
355356
return &intern->std;
356357
}
357358

358-
static zend_function *curl_get_constructor(zend_object *object) {
359+
static zend_function *swoole_curl_get_constructor(zend_object *object) {
359360
zend_throw_error(NULL, "Cannot directly construct CurlHandle, use curl_init() instead");
360361
return NULL;
361362
}
362363

363-
static zend_object *curl_clone_obj(zend_object *object) {
364+
static zend_object *swoole_curl_clone_obj(zend_object *object) {
364365
php_curl *ch;
365366
CURL *cp;
366367
zval *postfields;
367368
zend_object *clone_object;
368369
php_curl *clone_ch;
369370

370-
clone_object = curl_create_object(curl_ce);
371+
clone_object = swoole_curl_create_object(curl_ce);
371372
clone_ch = curl_from_obj(clone_object);
372373
swoole_curl_init_handle(clone_ch);
373374

@@ -392,7 +393,7 @@ static zend_object *curl_clone_obj(zend_object *object) {
392393
return &clone_ch->std;
393394
}
394395

395-
static HashTable *curl_get_gc(zend_object *object, zval **table, int *n) {
396+
static HashTable *swoole_curl_get_gc(zend_object *object, zval **table, int *n) {
396397
php_curl *curl = curl_from_obj(object);
397398

398399
zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
@@ -2774,7 +2775,7 @@ static void _php_curl_free(php_curl *ch) {
27742775
}
27752776

27762777
#if PHP_VERSION_ID >= 80000
2777-
static void curl_free_obj(zend_object *object) {
2778+
static void swoole_curl_free_obj(zend_object *object) {
27782779
php_curl *ch = curl_from_obj(object);
27792780

27802781
#if PHP_CURL_DEBUG

thirdparty/php/curl/multi.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ SW_EXTERN_C_BEGIN
3737
#if PHP_VERSION_ID >= 80000
3838
/* CurlMultiHandle class */
3939

40+
extern zend_class_entry *curl_multi_ce;
4041
zend_class_entry *swoole_coroutine_curl_multi_handle_ce;
4142

4243
static inline php_curlm *curl_multi_from_obj(zend_object *obj) {
@@ -699,6 +700,7 @@ void curl_multi_register_class(const zend_function_entry *method_entries) {
699700
SW_SET_CLASS_CUSTOM_OBJECT(
700701
swoole_coroutine_curl_multi_handle, curl_multi_create_object, curl_multi_free_obj, php_curlm, std);
701702
swoole_coroutine_curl_multi_handle_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
703+
swoole_coroutine_curl_multi_handle_ce->parent = curl_multi_ce;
702704
swoole_coroutine_curl_multi_handle_handlers.get_gc = curl_multi_get_gc;
703705
swoole_coroutine_curl_multi_handle_handlers.get_constructor = curl_multi_get_constructor;
704706
swoole_coroutine_curl_multi_handle_handlers.clone_obj = NULL;

0 commit comments

Comments
 (0)