Execute PHP command in background with Pimcore

What you'll learn with this guide 

This guide will show you how to trigger a command that will create a new process separate from the one that’s currently running. Useful when there is a need for running time-consuming operations.

Where to use

To put it in use, let's say you want to process a file which the user has uploaded to the server. If this process can take some time, it's good practice not to keep the user waiting. Instead, you can start a background process that won't be affected by user actions.
In a flow chart it would look something like this:

Cron job - performance optimization - flowchart

Development solution

Solution with background process mentioned in the example above can be done by running:


How it works

Method for running PHP script in the background works on Unix and Windows operating systems, and the above-described statement is in the end executed as:

Unix


With the command above, using “nohup” and “nice”, we start a process in the background with priority set to 19 (lowest priority, -20 is the highest), and all of it will be logged to “/output/path” (default is “/dev/null” which will discard output result). 
if we run the above command in the terminal and close it, the process would still be running until the script is finished. 

Windows


The same as on Unix, the command above carries out the given PHP command using the shell, which is started with the PHP COM module and then terminates when it’s finished.
 

Does it work? 

If the command had some output or an exception while running it, it would be logged in the output file, provided in a method call for the background process.

If you'd like some help with Pimcore, feel free to say hello@factory.dev! 

Looking for Exponential Growth? Let’s Get Started.
Explore next

Pimcore Tutorial

Check out our step-by-step tutorials on how to use Pimcore features and solutions.

Discover more