From d31a8bac78b811f70bc9ead6d1942d689c7be100 Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 19 May 2026 17:54:48 +0200 Subject: [PATCH] Raise embedded PHP memory limit --- crates/forkpress-runtime/src/lib.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/crates/forkpress-runtime/src/lib.rs b/crates/forkpress-runtime/src/lib.rs index bc827fb1..a02d31cd 100644 --- a/crates/forkpress-runtime/src/lib.rs +++ b/crates/forkpress-runtime/src/lib.rs @@ -9,6 +9,7 @@ use std::process::Command; use zip::ZipArchive; const STARTUP_WARNING_FILTER: &str = "Missing arginfo"; +const FORKPRESS_PHP_MEMORY_LIMIT: &str = "512M"; #[derive(Debug, Clone)] pub struct PortableRuntime { @@ -44,6 +45,28 @@ mod tests { assert_eq!(bundled_php_name(), "php"); } } + + #[test] + fn php_base_command_uses_forkpress_memory_limit() { + let root = + std::env::temp_dir().join(format!("forkpress-runtime-test-{}", std::process::id())); + let layout = Layout::new(root.join(".forkpress")).unwrap(); + let runtime = PortableRuntime { + php: PathBuf::from("/tmp/forkpress-php"), + }; + let shared = SharedPaths { + work_dir: layout.work_dir.clone(), + php_bin: None, + }; + + let command = php_base_command(&layout, &runtime, &shared); + let args: Vec = command + .get_args() + .map(|arg| arg.to_string_lossy().into_owned()) + .collect(); + + assert!(args.contains(&"memory_limit=512M".to_string())); + } } pub fn prepare_runtime(layout: &Layout, bundle: &[u8], bundle_id: &str) -> Result<()> { @@ -128,6 +151,8 @@ pub fn php_base_command( ) -> Command { let mut command = php_command(runtime, shared); command + .arg("-d") + .arg(format!("memory_limit={FORKPRESS_PHP_MEMORY_LIMIT}")) .arg("-d") .arg("display_errors=Off") .arg("-d")