aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/php-wasm.c
diff options
context:
space:
mode:
Diffstat (limited to 'worker/php-wasm.c')
-rw-r--r--worker/php-wasm.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/worker/php-wasm.c b/worker/php-wasm.c
new file mode 100644
index 0000000..9c71ca1
--- /dev/null
+++ b/worker/php-wasm.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <emscripten.h>
+#include <Zend/zend_execute.h>
+#include <sapi/embed/php_embed.h>
+
+int EMSCRIPTEN_KEEPALIVE php_wasm_run(const char* code) {
+ zend_result result;
+
+ int argc = 1;
+ char* argv[] = { "php.wasm", NULL };
+
+ PHP_EMBED_START_BLOCK(argc, argv);
+
+ result = zend_eval_string_ex(code, NULL, "php.wasm code", 1);
+
+ PHP_EMBED_END_BLOCK();
+
+ fflush(stdout);
+ fflush(stderr);
+
+ return result == SUCCESS ? 0 : 1;
+}