mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-12-24 13:38:11 +08:00
* Decouple workers. * Moves code to separate file. * Cleans up the exponential backoff. * Initial working implementation. * Refactors php threads to take callbacks. * Cleanup. * Cleanup. * Cleanup. * Cleanup. * Adjusts watcher logic. * Adjusts the watcher logic. * Fix opcache_reset race condition. * Fixing merge conflicts and formatting. * Prevents overlapping of TSRM reservation and script execution. * Adjustments as suggested by @dunglas. * Adds error assertions. * Adds comments. * Removes logs and explicitly compares to C.false. * Resets check. * Adds cast for safety. * Fixes waitgroup overflow. * Resolves waitgroup race condition on startup. * Moves worker request logic to worker.go. * Removes defer. * Removes call from go to c. * Fixes merge conflict. * Adds fibers test back in. * Refactors new thread loop approach. * Removes redundant check. * Adds compareAndSwap. * Refactor: removes global waitgroups and uses a 'thread state' abstraction instead. * Removes unnecessary method. * Updates comment. * Removes unnecessary booleans. * test * First state machine steps. * Splits threads. * Minimal working implementation with broken tests. * Fixes tests. * Refactoring. * Fixes merge conflicts. * Formatting * C formatting. * More cleanup. * Allows for clean state transitions. * Adds state tests. * Adds support for thread transitioning. * Fixes the testdata path. * Formatting. * Allows transitioning back to inactive state. * Fixes go linting. * Formatting. * Removes duplication. * Applies suggestions by @dunglas * Removes redundant check. * Locks the handler on restart. * Removes unnecessary log. * Changes Unpin() logic as suggested by @withinboredom * Adds suggestions by @dunglas and resolves TODO. * Makes restarts fully safe. * Will make the initial startup fail even if the watcher is enabled (as is currently the case) * Also adds compareAndSwap to the test. * Adds comment. * Prevents panic on initial watcher startup.
73 lines
2.2 KiB
C
73 lines
2.2 KiB
C
#ifndef _FRANKENPPHP_H
|
|
#define _FRANKENPPHP_H
|
|
|
|
#include <Zend/zend_types.h>
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#ifndef FRANKENPHP_VERSION
|
|
#define FRANKENPHP_VERSION dev
|
|
#endif
|
|
#define STRINGIFY(x) #x
|
|
#define TOSTRING(x) STRINGIFY(x)
|
|
|
|
typedef struct go_string {
|
|
size_t len;
|
|
char *data;
|
|
} go_string;
|
|
|
|
typedef struct php_variable {
|
|
const char *var;
|
|
size_t data_len;
|
|
char *data;
|
|
} php_variable;
|
|
|
|
typedef struct frankenphp_version {
|
|
unsigned char major_version;
|
|
unsigned char minor_version;
|
|
unsigned char release_version;
|
|
const char *extra_version;
|
|
const char *version;
|
|
unsigned long version_id;
|
|
} frankenphp_version;
|
|
frankenphp_version frankenphp_get_version();
|
|
|
|
typedef struct frankenphp_config {
|
|
frankenphp_version version;
|
|
bool zts;
|
|
bool zend_signals;
|
|
bool zend_max_execution_timers;
|
|
} frankenphp_config;
|
|
frankenphp_config frankenphp_get_config();
|
|
|
|
int frankenphp_new_main_thread(int num_threads);
|
|
bool frankenphp_new_php_thread(uintptr_t thread_index);
|
|
|
|
int frankenphp_update_server_context(
|
|
bool create, bool has_main_request, bool has_active_request,
|
|
|
|
const char *request_method, char *query_string, zend_long content_length,
|
|
char *path_translated, char *request_uri, const char *content_type,
|
|
char *auth_user, char *auth_password, int proto_num);
|
|
int frankenphp_request_startup();
|
|
int frankenphp_execute_script(char *file_name);
|
|
|
|
int frankenphp_execute_script_cli(char *script, int argc, char **argv);
|
|
|
|
int frankenphp_execute_php_function(const char *php_function);
|
|
|
|
void frankenphp_register_variables_from_request_info(
|
|
zval *track_vars_array, zend_string *content_type,
|
|
zend_string *path_translated, zend_string *query_string,
|
|
zend_string *auth_user, zend_string *request_method,
|
|
zend_string *request_uri);
|
|
void frankenphp_register_variable_safe(char *key, char *var, size_t val_len,
|
|
zval *track_vars_array);
|
|
void frankenphp_register_trusted_var(zend_string *z_key, char *value,
|
|
int val_len, zval *track_vars_array);
|
|
zend_string *frankenphp_init_persistent_string(const char *string, size_t len);
|
|
void frankenphp_release_zend_string(zend_string *z_string);
|
|
int frankenphp_reset_opcache(void);
|
|
|
|
#endif
|