{"id":27133,"date":"2024-03-16T07:57:48","date_gmt":"2024-03-16T07:57:48","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/"},"modified":"2024-03-22T10:17:13","modified_gmt":"2024-03-22T10:17:13","slug":"how-to-asynchronously-execute-a-shell-script-in-php","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/","title":{"rendered":"How to asynchronously execute a shell script in PHP?"},"content":{"rendered":"<p>In PHP, the exec() function can be used to execute shell scripts. However, exec() is synchronous, meaning that the PHP script will wait until the shell script has finished executing. To achieve asynchronous execution of shell scripts, the following method can be used:<\/p>\n<ol>\n<li>execute()<\/li>\n<li>Can you please put that in your own words?<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-title function_ invoke__\">exec<\/span>(<span class=\"hljs-string\">\"your_script.sh &gt; \/dev\/null 2&gt;&amp;1 &amp;\"<\/span>);\r\n<\/code><\/pre>\n<p>Redirect the output of the script to \/dev\/null 2>&#038;1 here, with the &#8220;&#038;&#8221; symbol indicating that the script will be executed in the background.<\/p>\n<ol>\n<li>Execute a shell command<\/li>\n<li>The command &#8220;nohup&#8221;<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-title function_ invoke__\">shell_exec<\/span>(<span class=\"hljs-string\">\"nohup your_script.sh &gt; \/dev\/null 2&gt;&amp;1 &amp;\"<\/span>);\r\n<\/code><\/pre>\n<p>The nohup command is used to ignore the HUP (hang up) signal and run a script in the background.<\/p>\n<ol>\n<li>a function called proc_open()<\/li>\n<li>Make the data stream blocking or non-blocking.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-variable\">$descriptorspec<\/span> = <span class=\"hljs-keyword\">array<\/span>(\r\n    <span class=\"hljs-number\">0<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">\"pipe\"<\/span>, <span class=\"hljs-string\">\"r\"<\/span>),  <span class=\"hljs-comment\">\/\/ stdin is a pipe that the child will read from<\/span>\r\n    <span class=\"hljs-number\">1<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">\"pipe\"<\/span>, <span class=\"hljs-string\">\"w\"<\/span>),  <span class=\"hljs-comment\">\/\/ stdout is a pipe that the child will write to<\/span>\r\n    <span class=\"hljs-number\">2<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">\"pipe\"<\/span>, <span class=\"hljs-string\">\"w\"<\/span>)   <span class=\"hljs-comment\">\/\/ stderr is a pipe that the child will write to<\/span>\r\n);\r\n\r\n<span class=\"hljs-variable\">$process<\/span> = <span class=\"hljs-title function_ invoke__\">proc_open<\/span>(<span class=\"hljs-string\">\"your_script.sh\"<\/span>, <span class=\"hljs-variable\">$descriptorspec<\/span>, <span class=\"hljs-variable\">$pipes<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u4e3a\u975e\u963b\u585e\u6a21\u5f0f<\/span>\r\n<span class=\"hljs-title function_ invoke__\">stream_set_blocking<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">1<\/span>], <span class=\"hljs-number\">0<\/span>);\r\n<span class=\"hljs-title function_ invoke__\">stream_set_blocking<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">2<\/span>], <span class=\"hljs-number\">0<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ \u5173\u95ed\u4e0d\u9700\u8981\u7684\u7ba1\u9053<\/span>\r\n<span class=\"hljs-title function_ invoke__\">fclose<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">0<\/span>]);\r\n\r\n<span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u811a\u672c\u7684\u8f93\u51fa<\/span>\r\n<span class=\"hljs-variable\">$output<\/span> = <span class=\"hljs-title function_ invoke__\">stream_get_contents<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">1<\/span>]);\r\n<span class=\"hljs-variable\">$error<\/span> = <span class=\"hljs-title function_ invoke__\">stream_get_contents<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">2<\/span>]);\r\n\r\n<span class=\"hljs-comment\">\/\/ \u5173\u95ed\u7ba1\u9053\u548c\u8fdb\u7a0b<\/span>\r\n<span class=\"hljs-title function_ invoke__\">fclose<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">1<\/span>]);\r\n<span class=\"hljs-title function_ invoke__\">fclose<\/span>(<span class=\"hljs-variable\">$pipes<\/span>[<span class=\"hljs-number\">2<\/span>]);\r\n<span class=\"hljs-title function_ invoke__\">proc_close<\/span>(<span class=\"hljs-variable\">$process<\/span>);\r\n<\/code><\/pre>\n<p>Here are several methods in PHP to implement asynchronous execution of shell scripts. Choose the appropriate method based on your actual needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In PHP, the exec() function can be used to execute shell scripts. However, exec() is synchronous, meaning that the PHP script will wait until the shell script has finished executing. To achieve asynchronous execution of shell scripts, the following method can be used: execute() Can you please put that in your own words? exec(&#8220;your_script.sh &gt; [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-27133","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to asynchronously execute a shell script in PHP? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to asynchronously execute a shell script in PHP?\" \/>\n<meta property=\"og:description\" content=\"In PHP, the exec() function can be used to execute shell scripts. However, exec() is synchronous, meaning that the PHP script will wait until the shell script has finished executing. To achieve asynchronous execution of shell scripts, the following method can be used: execute() Can you please put that in your own words? exec(&quot;your_script.sh &gt; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T07:57:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T10:17:13+00:00\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivia Parker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"How to asynchronously execute a shell script in PHP?\",\"datePublished\":\"2024-03-16T07:57:48+00:00\",\"dateModified\":\"2024-03-22T10:17:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\"},\"wordCount\":145,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\",\"name\":\"How to asynchronously execute a shell script in PHP? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T07:57:48+00:00\",\"dateModified\":\"2024-03-22T10:17:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to asynchronously execute a shell script in PHP?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to asynchronously execute a shell script in PHP? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/","og_locale":"en_US","og_type":"article","og_title":"How to asynchronously execute a shell script in PHP?","og_description":"In PHP, the exec() function can be used to execute shell scripts. However, exec() is synchronous, meaning that the PHP script will wait until the shell script has finished executing. To achieve asynchronous execution of shell scripts, the following method can be used: execute() Can you please put that in your own words? exec(\"your_script.sh &gt; [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T07:57:48+00:00","article_modified_time":"2024-03-22T10:17:13+00:00","author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"How to asynchronously execute a shell script in PHP?","datePublished":"2024-03-16T07:57:48+00:00","dateModified":"2024-03-22T10:17:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/"},"wordCount":145,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/","name":"How to asynchronously execute a shell script in PHP? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T07:57:48+00:00","dateModified":"2024-03-22T10:17:13+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-asynchronously-execute-a-shell-script-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to asynchronously execute a shell script in PHP?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=27133"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27133\/revisions"}],"predecessor-version":[{"id":61346,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27133\/revisions\/61346"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=27133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=27133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=27133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}