├── examples ├── http │ ├── empty.txt │ ├── UPPER.TXT │ ├── moc.moc │ ├── test.txt │ ├── post.data │ ├── redirect.php │ ├── raw.php │ ├── download.php │ ├── static_handler.php │ └── no-compression.php ├── ssl │ ├── swoole.log │ ├── gen_cert.md │ ├── co_client.php │ ├── http_client.php │ ├── websocket_client.html │ └── passphrase.php ├── www │ ├── file2.txt │ ├── file1.txt │ ├── index.txt │ ├── dir1 │ │ ├── file1.txt │ │ └── file2.txt │ ├── dir2 │ │ ├── file1.txt │ │ ├── file2.txt │ │ └── index.txt │ └── index.html ├── http2 │ ├── test.html │ └── streaming.php ├── php │ ├── error.php │ ├── tick.php │ ├── func.php │ ├── exception.php │ ├── stream_client.php │ ├── inotify.php │ └── socket_client.php ├── length │ └── config.php ├── misc │ ├── get_local_mac.php │ ├── version.php │ └── get_local_ip.php ├── test.jpg ├── runtime │ ├── include.php │ ├── sleep.php │ ├── unlink.phpt │ ├── rename.phpt │ ├── gethostbyname.php │ ├── mkdir.php │ ├── read.php │ ├── time_sleep_until.php │ ├── sync.php │ ├── sqlite.php │ ├── file.php │ ├── stream.php │ ├── curl.php │ ├── ssl.php │ └── odbc.php ├── coroutine │ ├── statvfs.php │ ├── exec.php │ ├── scheduler.php │ ├── stack │ │ └── 2.php │ ├── coro_empty.php │ ├── gethostbyname.php │ ├── coro_include.php │ ├── redis │ │ ├── eval.php │ │ ├── request.php │ │ ├── auth.php │ │ ├── get.php │ │ ├── pub.php │ │ ├── serialize.php │ │ ├── multi.php │ │ ├── pipeline.php │ │ └── sub.php │ ├── deadlock.php │ ├── fwrite.php │ ├── fread.php │ ├── coro_set_stack_size.php │ ├── coro_sleep.php │ ├── coro_gethost.php │ ├── behavior │ │ ├── goto.php │ │ ├── foreach.php │ │ ├── do-while.php │ │ └── while2.php │ ├── util │ │ ├── resume002.php │ │ └── resume001.php │ ├── exit_with_status.php │ ├── sleep.php │ ├── stack.php │ ├── cancel_throw.php │ ├── timer_test.php │ ├── coro_nested_empty.php │ ├── exception │ │ └── empty.php │ ├── mysql_escape.php │ ├── coro_util.php │ ├── mysql_execute_empty.php │ ├── http │ │ └── write_func.php │ ├── mysql_unixsocket.php │ ├── redis_subscribe.php │ ├── pdo │ │ └── pdo_persistent.phpt │ ├── socket │ │ ├── sendto.php │ │ └── accept.php │ ├── coro_call_user.php │ ├── http_download.php │ ├── exit_in_coroutine.php │ ├── http_client.php │ ├── list_coroutines.php │ ├── coro_invoke.php │ ├── coro_destruct.php │ ├── select │ │ ├── 9.php │ │ ├── poptimeout.php │ │ ├── 4.php │ │ ├── 2.php │ │ └── test.php │ ├── proc_open.php │ ├── tcp_backend_serv.php │ ├── coro_array_map.php │ ├── fgets.php │ ├── mysql_prepare_2.php │ ├── defer.php │ ├── mysql_query.php │ └── server │ │ └── tcp.php ├── process │ ├── set_cpu_affinity.php │ ├── echo.py │ ├── stdin_stdout.php │ ├── test.php │ ├── msg_push.php │ ├── msg_pop.php │ ├── alarm.php │ ├── client3.php │ ├── msgqueue_client.php │ ├── daemon.php │ ├── pool_socket.php │ ├── python.php │ ├── select.php │ ├── exec.php │ ├── msgqueue_pool.php │ ├── client.php │ └── close.php ├── event │ ├── stdin.php │ ├── test.php │ ├── cycle.php │ ├── inotify.php │ └── stream.php ├── stdext │ ├── typed_array.php │ ├── foreach.php │ └── typed_array_map.php ├── server │ ├── hot_update_class.php │ ├── single.php │ ├── listen_1k_port.php │ ├── dispatch_stream.php │ ├── dispatch_func.php │ ├── reload_force2.php │ └── reload_force.php ├── multicast │ └── client.php ├── atomic │ ├── test.php │ ├── long.php │ └── wait.php ├── timer │ ├── enable_coroutine.php │ └── clear.php ├── process_pool │ └── send.php ├── udp │ ├── client.php │ └── server.php ├── client │ ├── udp_sync.php │ ├── test.txt │ ├── long_tcp.php │ ├── simple.php │ └── recv_1m.php ├── thread │ ├── run_test.php │ ├── test.php │ ├── argv.php │ ├── lock.php │ ├── map.php │ ├── exit.php │ ├── array.php │ ├── nested_map.php │ ├── socket.php │ ├── pipe.php │ └── benchmark.php ├── ipv6 │ ├── udp_client.php │ ├── tcp_client.php │ └── udp_server.php ├── unixsock │ ├── dgram_client.php │ └── stream_client.php ├── dtls │ └── client.php ├── tracer │ ├── co.php │ └── gc.php ├── curl │ └── server.php ├── cpp │ └── Makefile ├── websocket │ └── client.html ├── socket_coro │ └── client.php └── table │ └── usage.php ├── scripts ├── .gitignore ├── debug │ ├── swoole_table_implements.php │ └── swoole_info.php ├── code-stats.sh ├── rename.php ├── pecl-install.sh ├── simple-compile.sh ├── install-deps-on-ubuntu.sh ├── docker-thread-route.sh ├── clear.sh └── docker-iouring-route.sh ├── thirdparty ├── nghttp2 │ └── LICENSE ├── php84 │ ├── ftp │ │ └── CREDITS │ └── pdo_firebird │ │ └── CREDITS ├── pdo_oci │ └── CREDITS ├── php85 │ └── pdo_firebird │ │ └── CREDITS ├── hiredis │ └── fmacros.h └── nlohmann │ └── detail │ └── meta │ └── void_t.hpp ├── tests ├── include │ ├── ssl_certs │ │ ├── ca.srl │ │ ├── client.pem │ │ ├── server.pem │ │ └── dhparams.pem │ ├── api │ │ ├── syntax_error.txt │ │ ├── swoole_server │ │ │ └── testsendfile.txt │ │ ├── test_classes │ │ │ ├── A2.php │ │ │ ├── A.php │ │ │ └── B.php │ │ ├── swoole_thread │ │ │ ├── sleep.php │ │ │ └── putenv.php │ │ ├── swoole_timer │ │ │ └── multi_timer.php │ │ ├── swoole_http_server │ │ │ ├── simple_http_server.php │ │ │ └── http_server_without_response.php │ │ ├── swoole_client │ │ │ └── connect_timeout.php │ │ └── swoole_websocket_server │ │ │ └── send_small_request_data.php │ └── lib │ │ └── src │ │ ├── Redis │ │ └── DBConnectException.php │ │ └── ThreadManager.php ├── swoole_curl │ ├── upload │ │ ├── curl_testdata1.txt │ │ └── curl_testdata2.txt │ ├── template │ └── multi │ │ ├── no_hook.phpt │ │ ├── 1.phpt │ │ └── 2.phpt ├── swoole_process │ ├── echo.py │ ├── ctor.phpt │ ├── pop.phpt │ ├── start.phpt │ ├── freeQueue.phpt │ ├── exit.phpt │ ├── redirect.phpt │ ├── null_callback.phpt │ ├── useQueue.phpt │ ├── kill.phpt │ ├── process_id.phpt │ ├── setaffinity.phpt │ ├── exec.phpt │ ├── coro │ │ └── start.phpt │ ├── getaffinity.phpt │ └── write.phpt ├── swoole_ssh2 │ ├── testkey_ed25519.pub │ ├── ssh2_auth.phpt │ ├── testkey_ed25519 │ └── bug79631.phpt ├── swoole_runtime │ ├── file_hook │ │ ├── a.inc │ │ ├── b.inc │ │ └── include.phpt │ ├── sockets │ │ └── basic │ │ │ ├── ipv6_skipif.inc │ │ │ ├── mcast_helpers.php.inc │ │ │ └── socket_accept_failure.phpt │ ├── get_hook_flags.phpt │ ├── hook_default.phpt │ ├── out_of_coroutine.phpt │ ├── unsafe │ │ └── pcntl_fork.phpt │ ├── proc │ │ └── proc_open_pipes.inc │ ├── hook_enable_coroutine.phpt │ ├── hook_set_flags.phpt │ ├── stream_context_pass_null.phpt │ ├── library.phpt │ └── file_lock │ │ └── lock_nb.phpt ├── CONTRIBUTION ├── swoole_global │ ├── closed_stdout.phpt │ ├── function_alias.phpt │ ├── unset_property_03.phpt │ ├── unset_property_01.phpt │ ├── unset_property_02.phpt │ └── too_many_objects.phpt ├── swoole_function │ ├── swoole_clear_dns_cache.phpt │ ├── swoole_cpu_num.phpt │ ├── swoole_version.phpt │ ├── swoole_get_local_mac.phpt │ ├── swoole_get_local_ip.phpt │ └── swoole_set_process_name.phpt ├── swoole_client_async │ ├── connect_twice.phpt │ └── enableSSL_bad_callback.phpt ├── swoole_coroutine │ ├── user_coroutine_2.phpt │ ├── max_num_limit.phpt │ ├── empty.phpt │ ├── exit_84.phpt │ ├── bug_5699.phpt │ ├── cid.phpt │ ├── dnslookup_5.phpt │ ├── create_after_rshutdown.phpt │ ├── dnslookup_query_hosts.phpt │ ├── getElasped.phpt │ ├── output │ │ ├── ob_main.phpt │ │ └── create.phpt │ ├── current.phpt │ ├── dnslookup_3.phpt │ ├── nested_empty.phpt │ ├── dnslookup_1.phpt │ ├── new_process.phpt │ ├── new_server.phpt │ ├── dnslookup_ipv6.phpt │ ├── resume_loop.phpt │ ├── array_walk.phpt │ ├── bailout │ │ └── error.phpt │ ├── dnslookup_2.phpt │ ├── call_user_func_array.phpt │ ├── nested1.phpt │ ├── nested2.phpt │ └── nested3.phpt ├── swoole_timer │ ├── swoole_timer_list_alias.phpt │ ├── enable_coroutine.phpt │ ├── greater_than_0.phpt │ ├── not_exist.phpt │ ├── bug_4794_7.phpt │ ├── next_round.phpt │ ├── verify.phpt │ └── bug_4794_5.phpt ├── swoole_table │ ├── create_10k_object.phpt │ ├── getMemorySize_1.phpt │ └── bug_2263.phpt ├── swoole_thread │ ├── empty_args.phpt │ ├── fatal_error_2.inc │ ├── server │ │ └── functions.inc │ ├── fatal_error_1.inc │ ├── map2array.phpt │ └── yield.phpt ├── swoole_coroutine_system │ ├── sleep.phpt │ ├── readfile.phpt │ ├── gethostbyname.phpt │ └── gethostbyname_ipv6.phpt ├── swoole_ftp │ ├── ftp_connect_001.phpt │ ├── ftp_constructor.phpt │ ├── ftp_pasv.phpt │ ├── bug27809.phpt │ ├── ftp_alloc_basic1.phpt │ ├── ftp_exec_basic.phpt │ ├── ftp_mlsd_missing_directory.phpt │ ├── ftp_rmdir_basic.phpt │ ├── bug7216.phpt │ ├── ftp_chmod_basic.phpt │ ├── ftp_rawlist_basic2.phpt │ ├── filesize_large.phpt │ ├── ftp_mlsd_empty_directory.phpt │ ├── ftp_alloc_basic2.phpt │ └── ftp_nb_put.phpt ├── swoole_event │ ├── defer_without_io.phpt │ ├── simple.phpt │ ├── deprecated_event_wait.phpt │ └── dispatch.phpt ├── swoole_server_coro │ └── random_port.phpt ├── swoole_http_server_coro │ └── random_port.phpt ├── swoole_library │ ├── database │ │ ├── pdo.phpt │ │ ├── mysqli.phpt │ │ └── redis.phpt │ └── exec │ │ ├── shell_exec │ │ └── 1.phpt │ │ └── exec │ │ └── 1.phpt ├── swoole_coroutine_wait_group │ └── empty.phpt ├── swoole_pdo_sqlite │ └── pdo_sqlite.inc ├── template ├── swoole_client_coro │ ├── connect_with_dns.phpt │ ├── close_twice.phpt │ ├── connect_dns_timeout.phpt │ └── getsockname.phpt ├── swoole_lock │ ├── lock_nb.phpt │ └── lock_timeout.phpt ├── swoole_channel_coro │ ├── pop_timeout1.phpt │ ├── pop_close1.phpt │ ├── pop_timeout5.phpt │ ├── push_close1.phpt │ ├── push_timeout3.phpt │ ├── 10.phpt │ └── bug_1947.phpt ├── swoole_pdo_firebird │ └── pdo_firebird.inc ├── swoole_server │ ├── ssl │ │ └── code │ │ │ └── client.js │ └── listen_fail.phpt ├── swoole_stdext │ ├── string_method │ │ ├── 1.phpt │ │ ├── json.phpt │ │ └── marshal.phpt │ ├── typed_array │ │ ├── 0.phpt │ │ ├── sort.phpt │ │ ├── 8.phpt │ │ ├── 9.phpt │ │ └── resource.phpt │ └── array_method │ │ └── 1.phpt ├── swoole_socket_coro │ ├── getsockname.phpt │ ├── fd.phpt │ └── ssl.phpt ├── swoole_client_sync │ ├── connect_2.phpt │ ├── connect_1.phpt │ └── enableSSL_2.phpt ├── swoole_http2_client_coro │ └── bug_5127.phpt ├── swoole_process_pool │ ├── shutdown.phpt │ └── master_pid.phpt ├── swoole_coroutine_scheduler │ └── getOptions.phpt ├── swoole_coroutine_util │ ├── fread.phpt │ ├── exec_sleep.phpt │ └── exec.phpt ├── swoole_atomic │ └── atomic.phpt ├── swoole_pdo_odbc │ └── server_info.phpt ├── swoole_pdo_oracle │ └── pdo_oracle.inc └── swoole_redis_server │ └── getHandler.phpt ├── tools ├── composer.json ├── export.php ├── rename.php ├── build-library.php ├── get-ip-info.php ├── gen-data.php ├── show-big-files.php └── send-http-data.php ├── .gitattributes ├── php-cs-fix ├── docs ├── CODE-STYLE.md └── CPPLINT.cfg ├── codecov.yml └── ext-src └── stubs ├── php_swoole_thread_barrier.stub.php ├── php_swoole_tracer.stub.php ├── php_swoole_name_resolver.stub.php ├── php_swoole_coroutine_lock.stub.php ├── php_swoole_runtime.stub.php ├── php_swoole_lock.stub.php ├── php_swoole_thread_lock.stub.php ├── php_swoole_redis_server.stub.php ├── php_swoole_thread_queue.stub.php ├── php_swoole_coroutine_scheduler.stub.php ├── php_swoole_thread_barrier_arginfo.h ├── php_swoole_http_request.stub.php ├── php_swoole_channel_coro.stub.php ├── php_swoole_server_port.stub.php ├── php_swoole_http_server_coro.stub.php ├── php_swoole_timer.stub.php └── php_swoole_ex.stub.php /examples/http/empty.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/ssl/swoole.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/www/file2.txt: -------------------------------------------------------------------------------- 1 | file2 -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | -------------------------------------------------------------------------------- /examples/www/file1.txt: -------------------------------------------------------------------------------- 1 | file1.txt -------------------------------------------------------------------------------- /examples/www/index.txt: -------------------------------------------------------------------------------- 1 | index.txt -------------------------------------------------------------------------------- /examples/www/dir1/file1.txt: -------------------------------------------------------------------------------- 1 | dir1/file1 -------------------------------------------------------------------------------- /examples/www/dir1/file2.txt: -------------------------------------------------------------------------------- 1 | dir1/file2 -------------------------------------------------------------------------------- /examples/www/dir2/file1.txt: -------------------------------------------------------------------------------- 1 | dir2/file1 -------------------------------------------------------------------------------- /examples/http/UPPER.TXT: -------------------------------------------------------------------------------- 1 | HELLO WORLD! 2 | -------------------------------------------------------------------------------- /examples/http/moc.moc: -------------------------------------------------------------------------------- 1 | this is moc.moc 2 | -------------------------------------------------------------------------------- /examples/http/test.txt: -------------------------------------------------------------------------------- 1 | hello world! 2 | -------------------------------------------------------------------------------- /examples/http2/test.html: -------------------------------------------------------------------------------- 1 |