2011-09-03 10 views
6

मेरे पास एक PHP स्क्रिप्ट है जो नौकरियों की एक सूची के लिए डेटाबेस से पूछताछ करता है और डेटाबेस में जो भी पाता है (मूल रूप से एक प्रक्रिया कतार) के आधार पर अन्य PHP स्क्रिप्ट को निकाल देता है।PHP shell_exec स्क्रिप्ट खत्म होने के लिए प्रतीक्षा करें?

कतार रनर स्क्रिप्ट निष्पादित करने वाली कुछ स्क्रिप्ट्स को चलाने के लिए 30 सेकंड या उससे अधिक समय लग सकता है (पीडीएफ उत्पन्न करना, छवियों का आकार बदलना आदि)।

समस्या यह है कि कतार धावक स्क्रिप्ट में shell_exec() प्रसंस्करण स्क्रिप्ट को कॉल करता है, लेकिन फिर उनके समाप्त होने की प्रतीक्षा नहीं करता है, जिसके परिणामस्वरूप कतार पूरी नहीं हो पाती है।

कतार धावक स्क्रिप्ट:

#!/usr/bin/php 
<?php 
    // Loop through database and find jobs to be done 
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName'])); 
?> 

नौकरी स्क्रिप्ट:

#!/usr/bin/php 
<?php 
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf"); 
    // Update database to mark job as completed 
?> 

कमांड लाइन से सीधे काम स्क्रिप्ट चल रही है काम करता है और पीडीएफ बनाया जाता है।

इसे ठीक करने के तरीके पर कोई विचार? या एक प्रक्रिया कतार चलाने के लिए एक बेहतर तरीका है?

+1

कृपया कुछ कोड को दिखाने –

उत्तर

7

इस प्रयास करें:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &"); 
संबंधित मुद्दे