{"id":28588,"date":"2018-05-19T10:37:12","date_gmt":"2018-05-19T08:37:12","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=28588"},"modified":"2018-05-19T10:37:12","modified_gmt":"2018-05-19T08:37:12","slug":"pvm-php-process-virtual-machine-for-building-and-executing-workflows","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/","title":{"rendered":"pvm &#8211; PHP Process virtual machine for building and executing workflows"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"28589\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/pizza-process-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?fit=1968%2C830&amp;ssl=1\" data-orig-size=\"1968,830\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pizza-process\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?fit=660%2C278&amp;ssl=1\" class=\"aligncenter size-medium wp-image-28589\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process-500x211.png?resize=500%2C211&#038;ssl=1\" alt=\"\" width=\"500\" height=\"211\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?resize=500%2C211&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?resize=768%2C324&amp;ssl=1 768w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?resize=1024%2C432&amp;ssl=1 1024w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?w=1968&amp;ssl=1 1968w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process.png?w=1320 1320w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>At some point last year I wrote the blog post titled &#8220;<a href=\"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/20\/getting-started-with-workflows-in-php\/\">Getting started with workflows in PHP<\/a>&#8220;.\u00a0 I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven&#8217;t done much more with workflows since than.<\/p>\n<p>The world, however, hasn&#8217;t stopped.\u00a0 The tools and libraries that existed a year ago are still around and they got a lot better.\u00a0 Additionally, there are a few new tools that help with workflows, state machines, and the like.<\/p>\n<p>Today I came across a really useful and easy to use tool for building and executing workflows in PHP &#8211; <a href=\"https:\/\/github.com\/formapro\/pvm\">pvm<\/a>, aka PHP Process Virtual Machine.\u00a0 It&#8217;s built and released as Open Source software under MIT license by the excellent guys at <a href=\"https:\/\/pvm.forma-pro.com\/\">Forma-Pro<\/a>.\u00a0 \u00a0If you are still looking for a tool to build and execute workflows, I strongly suggest you give PVM a try.\u00a0 Given how complex the nature of the problem, this tool is probably the easiest to get started with.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>At some point last year I wrote the blog post titled &#8220;Getting started with workflows in PHP&#8220;.\u00a0 I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven&#8217;t done much more with workflows since than. The world, however, hasn&#8217;t stopped.\u00a0 The tools and libraries that existed a &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">pvm &#8211; PHP Process virtual machine for building and executing workflows<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"pvm - PHP Process virtual machine for building and executing workflows #WebDev #PHP #BPMN #workflow #ProcessManagement #automation","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[3504,38,1330,92],"keyring_services":[],"class_list":["post-28588","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-business-process-management","tag-php","tag-web-development","tag-workflow"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"At some point last year I wrote the blog post titled &quot;Getting started with workflows in PHP&quot;. I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven&#039;t done much more with workflows since than. The world, however, hasn&#039;t stopped. The tools and libraries that existed a\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"At some point last year I wrote the blog post titled &quot;Getting started with workflows in PHP&quot;. I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven&#039;t done much more with workflows since than. The world, however, hasn&#039;t stopped. The tools and libraries that existed a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-05-19T08:37:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2018-05-19T08:37:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"At some point last year I wrote the blog post titled &quot;Getting started with workflows in PHP&quot;. I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven&#039;t done much more with workflows since than. The world, however, hasn&#039;t stopped. The tools and libraries that existed a\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#blogposting\",\"name\":\"pvm \\u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov\",\"headline\":\"pvm &#8211; PHP Process virtual machine for building and executing workflows\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/pizza-process-500x211.png\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#articleImage\"},\"datePublished\":\"2018-05-19T10:37:12+02:00\",\"dateModified\":\"2018-05-19T10:37:12+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, business process management, PHP, web development, workflow\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#listItem\",\"name\":\"pvm &#8211; PHP Process virtual machine for building and executing workflows\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#listItem\",\"position\":4,\"name\":\"pvm &#8211; PHP Process virtual machine for building and executing workflows\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/\",\"name\":\"pvm \\u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov\",\"description\":\"At some point last year I wrote the blog post titled \\\"Getting started with workflows in PHP\\\". I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven't done much more with workflows since than. The world, however, hasn't stopped. The tools and libraries that existed a\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/05\\\/19\\\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2018-05-19T10:37:12+02:00\",\"dateModified\":\"2018-05-19T10:37:12+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov","description":"At some point last year I wrote the blog post titled \"Getting started with workflows in PHP\". I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven't done much more with workflows since than. The world, however, hasn't stopped. The tools and libraries that existed a","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#blogposting","name":"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov","headline":"pvm &#8211; PHP Process virtual machine for building and executing workflows","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/pizza-process-500x211.png","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#articleImage"},"datePublished":"2018-05-19T10:37:12+02:00","dateModified":"2018-05-19T10:37:12+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#webpage"},"articleSection":"All, Programming, Technology, Web work, business process management, PHP, web development, workflow"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#listItem","name":"pvm &#8211; PHP Process virtual machine for building and executing workflows"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#listItem","position":4,"name":"pvm &#8211; PHP Process virtual machine for building and executing workflows","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/","name":"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov","description":"At some point last year I wrote the blog post titled \"Getting started with workflows in PHP\". I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven't done much more with workflows since than. The world, however, hasn't stopped. The tools and libraries that existed a","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2018-05-19T10:37:12+02:00","dateModified":"2018-05-19T10:37:12+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov","og:description":"At some point last year I wrote the blog post titled &quot;Getting started with workflows in PHP&quot;. I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven't done much more with workflows since than. The world, however, hasn't stopped. The tools and libraries that existed a","og:url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2018-05-19T08:37:12+00:00","article:modified_time":"2018-05-19T08:37:12+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"pvm \u2013 PHP Process virtual machine for building and executing workflows - Leonid Mamchenkov","twitter:description":"At some point last year I wrote the blog post titled &quot;Getting started with workflows in PHP&quot;. I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven't done much more with workflows since than. The world, however, hasn't stopped. The tools and libraries that existed a","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"28588","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 23:10:32","updated":"2026-01-15 13:40:44","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tpvm \u2013 PHP Process virtual machine for building and executing workflows\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"pvm &#8211; PHP Process virtual machine for building and executing workflows","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/19\/pvm-php-process-virtual-machine-for-building-and-executing-workflows\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":27684,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/14\/formapropvm-php-library-for-building-workflows-and-business-processes\/","url_meta":{"origin":28588,"position":0},"title":"formapro\/pvm &#8211; PHP library for building workflows and business processes","author":"Leonid Mamchenkov","date":"June 14, 2017","format":false,"excerpt":"formapro\/pvm is a PHP library for building workflows and business processes. \u00a0This is a nice addition to alternatives that I've looked at in \"Getting started with workflows in PHP\". \u00a0The library is brought to you by Forma Pro, the same guys who are behind the php-enqueue enterprise queuing solution in\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/06\/pizza-process-500x211.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":27434,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/20\/getting-started-with-workflows-in-php\/","url_meta":{"origin":28588,"position":1},"title":"Getting started with workflows in PHP","author":"Leonid Mamchenkov","date":"March 20, 2017","format":false,"excerpt":"For a large project at work, we need to integrate or develop a workflow engine. \u00a0I worked a little bit with workflow engines in the past, but the subject is way to big and complex for me to claim any expertise in it. So, I am looking at what's available\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/03\/BPMN.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26351,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/php-backdoors\/","url_meta":{"origin":28588,"position":2},"title":"PHP backdoors","author":"Leonid Mamchenkov","date":"August 12, 2016","format":false,"excerpt":"PHP backdoors repository is a collection of obfuscated and deobfuscated PHP backdoors. (For educational or testing purposes only, obviously.) \u00a0These provide a great insight into what kind of functionality the attackers are looking for when they exploit your application. \u00a0Most of these rotate around file system operations, executing commands, and\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28454,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/03\/26\/threadable-a-php-library-for-parallel-execution\/","url_meta":{"origin":28588,"position":3},"title":"Threadable &#8211; a PHP library for parallel execution","author":"Leonid Mamchenkov","date":"March 26, 2018","format":false,"excerpt":"Threadable is a PHP library that helps with building applications that need to run multiple threads in parallel.\u00a0 It relies on posix and pcntl PHP extensions and does all the heavy lifting of process control.\u00a0 I find this very useful, as not many PHP developers are familiar with process management.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28179,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/11\/06\/php-ml-machine-learning-library-for-php\/","url_meta":{"origin":28588,"position":4},"title":"PHP-ML &#8211; Machine Learning library for PHP","author":"Leonid Mamchenkov","date":"November 6, 2017","format":false,"excerpt":"PHP-ML is a machine learning library for PHP.\u00a0 Given, PHP is probably not the best choice when it comes to machine learning, but sometimes one is limited in technology stack choices, so it's good have options like this one. Fresh approach to Machine Learning in PHP. Algorithms, Cross Validation, Neural\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27454,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/26\/phpqa-all-in-one-analyzer-cli-tool\/","url_meta":{"origin":28588,"position":5},"title":"PHPQA all-in-one Analyzer CLI tool","author":"Leonid Mamchenkov","date":"March 26, 2017","format":false,"excerpt":"PHPQA all-in-one Analyzer CLI tool. \u00a0This project bundles together all the usual PHP quality control tools, and then some. \u00a0It simplifies the installation and configuration of the tools and helps developers to push up the quality control bar on their projects. The tools currently included are: PHP Parallel Lint PHP\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/03\/phplint-500x390.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=28588"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28588\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=28588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=28588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=28588"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=28588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}