#ifndef _FUNC_H#define _FUNC_H#include <php.h>struct pthread_fake {void *nothing[90];pid_t tid;pid_t pid;};#define pthread_tid_ex(t) ((struct pthread_fake*) t)->tid#define pthread_tid pthread_tid_ex(pthread_self())#define dprintf(fmt, args...) if(UNEXPECTED(isDebug)) {fprintf(stderr, "[%s] [TID:%d] " fmt, gettimeofstr(), pthread_tid, ##args);fflush(stderr);}extern zend_module_entry threadtask_module_entry;extern volatile unsigned int maxthreads;extern volatile unsigned int delay;extern volatile zend_bool isDebug;extern volatile zend_bool isReload;double microtime();int strnatcmp(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case);void debug_print_backtrace(const char *prefix, int skip_last, int options, int limit);void thread_init();void thread_running();void thread_sigmask();void thread_destroy();const char *gettimeofstr();extern size_t (*old_ub_write_handler)(const char *str, size_t str_length);extern void (*old_flush_handler)(void *server_context);size_t php_thread_ub_write_handler(const char *str, size_t str_length);void php_thread_flush_handler(void *server_context);void socket_import_fd(int fd, zval *return_value);#if PHP_VERSION_ID < 70400void zend_stream_init_filename(zend_file_handle *file_handle, const char *script_file);#endif#ifndef Z_PARAM_RESOURCE_OR_NULL#define Z_PARAM_RESOURCE_OR_NULL(dest) \Z_PARAM_RESOURCE_EX(dest, 1, 0)#endif#ifndef Z_PARAM_ZVAL_DEREF#define Z_PARAM_ZVAL_DEREF(dest) Z_PARAM_ZVAL_EX2(dest, 0, 1, 0)#endif#ifndef Z_PARAM_STR_OR_LONG_EX#if PHP_VERSION_ID >= 70400#define ERROR_CODE _error_code#else#define ERROR_CODE error_code#endif#define Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, allow_null) \Z_PARAM_PROLOGUE(0, 0); \if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null))) { \_expected_type = Z_EXPECTED_STRING; \ERROR_CODE = ZPP_ERROR_WRONG_ARG; \break; \}#define Z_PARAM_STR_OR_LONG(dest_str, dest_long) \Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, _dummy, 0);#define Z_PARAM_STR_OR_LONG_OR_NULL(dest_str, dest_long, is_null) \Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, 1);static zend_always_inline int zend_parse_arg_str_or_long(zval *arg, zend_string **dest_str, zend_long *dest_long,zend_bool *is_null, int allow_null){if (allow_null) {*is_null = 0;}if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {*dest_str = Z_STR_P(arg);return 1;} else if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {*dest_str = NULL;*dest_long = Z_LVAL_P(arg);return 1;} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {*dest_str = NULL;*is_null = 1;return 1;} else {if (zend_parse_arg_long_weak(arg, dest_long)) {*dest_str = NULL;return 1;} else if (zend_parse_arg_str_weak(arg, dest_str)) {*dest_long = 0;return 1;} else {return 0;}}}#endif#ifndef ZEND_PARSE_PARAMETERS_NONE#define ZEND_PARSE_PARAMETERS_NONE() do { \if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \zend_wrong_parameters_none_error(); \return; \} \} while (0)static zend_always_inline int zend_wrong_parameters_none_error(void) /* {{{ */{int num_args = ZEND_CALL_NUM_ARGS(EG(current_execute_data));zend_function *active_function = EG(current_execute_data)->func;const char *class_name = active_function->common.scope ? ZSTR_VAL(active_function->common.scope->name) : "";zend_internal_argument_count_error(ZEND_ARG_USES_STRICT_TYPES(),"%s%s%s() expects %s %d parameter%s, %d given",class_name, \class_name[0] ? "::" : "", \ZSTR_VAL(active_function->common.function_name),"exactly",0,"s",num_args);return FAILURE;}/* }}} */#endif#ifndef ZEND_THIS#define ZEND_THIS getThis()#endif#if PHP_VERSION_ID < 80000#define Z_OBJ_PROP(ex) (ex)#else#define Z_OBJ_PROP(ex) Z_OBJ_P(ex)#endif#if PHP_VERSION_ID < 70300#define zend_string_release_ex(s, f) zend_string_release(s)#endif#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型