2011-03-31 13 views
29

मेरे पास एक php स्क्रिप्ट है जिसे मैं बैश स्क्रिप्ट का उपयोग करके चलाने के लिए चाहता हूं, इसलिए मैं हर मिनट या तो php स्क्रिप्ट चलाने के लिए क्रोन का उपयोग कर सकता हूं।PHP स्क्रिप्ट चलाने के लिए बैश स्क्रिप्ट

जहां तक ​​मुझे पता है मुझे PHP स्क्रिप्ट को संभालने के लिए बैश स्क्रिप्ट बनाने की आवश्यकता है जो मुझे क्रॉन टूल/टाइमर का उपयोग करने की अनुमति देगा। मेरे PHP स्क्रिप्ट के शुरू में

#!/pathtoscript/testphp.php 

:

अब तक मुझे बताया गया था मैं डाल करने के लिए की जरूरत है। मुझे यकीन नहीं है कि यहां से क्या करना है ...

कोई सलाह? धन्यवाद।

उत्तर

58

आप PHP एक कमांड लाइन उपकरण के रूप में स्थापित किया है (टर्मिनल के लिए php जारी करने के लिए प्रयास करें और अगर यह काम करता है देखें), अपने कुटिया (#!) पंक्ति कुछ ऐसी दिखाई जाने की आवश्यकता है:

#!/usr/bin/php 

रखो पर कि अपनी स्क्रिप्ट के शीर्ष पर, इसे निष्पादन योग्य बनाएं (chmod +x myscript.php), और उस स्क्रिप्ट को निष्पादित करने के लिए क्रॉन जॉब बनाएं (उसी तरह आप एक बैश स्क्रिप्ट निष्पादित करेंगे)।

आप php myscript.php का भी उपयोग कर सकते हैं।

+20

आप कमांड लाइन के उपयोग के लिए एक कुटिया का उपयोग करने के लिए जा रहे हैं, तो आप वास्तव में "** #!/Usr/bin/env php **" का उपयोग करना चाहिए, के रूप में यह स्क्रिप्ट की अनुमति देता है अधिक पोर्टेबल होने के लिए, चूंकि PHP हमेशा "/ usr/bin/php" में स्थापित नहीं हो सकता है। सही बात? – Rican7

0

यदि आप php को चलाने से पहले अपनी बैश स्क्रिप्ट में कुछ भी नहीं करते हैं, तो आप क्रॉन से/usr/bin/php /path/to/your/file.php जैसे कमांड से php स्क्रिप्ट चला सकते हैं। ।

/usr/bin/php path_to_your_php_file 

अपने crontab में:

7

तुम सिर्फ सेट करना होगा।

#!/bin/bash 
/usr/bin/php /path/to/php/file.php 

आप php निष्पादन की जरूरत है (आमतौर पर/usr/bin में पाया) और php स्क्रिप्ट के रास्ते भाग गया जा करने के लिए:

+0

मुझे पथ से पहले एक php जोड़ना पड़ा, लेकिन अवधारणा ने काम किया। –

4

बैश स्क्रिप्ट कुछ इस तरह होना चाहिए। अब आपको केवल इस बैश स्क्रिप्ट को क्रॉन्टाब पर रखना होगा और आप कर चुके हैं!

5

मैं इस तरह यकीन है कि कुछ आप के लिए क्या देख रहे है:

#!/bin/sh 

php /pathToScript/script.php 

सहेजें जो आपके इच्छित स्क्रिप्ट नाम के साथ (जैसे runPHP.sh के रूप में) और इसे देने के निष्पादन अधिकार है, तो आप उपयोग कर सकते हैं हालांकि आप चाहते हैं।

संपादित करें: यदि आप गलत नहीं हैं, तो आप क्रैशबैब को "php ..." कमांड भी जोड़ सकते हैं।

शुभकामनाएं!

+0

अधिकांश वातावरण में आप केवल 'php youscript.php' को कॉल नहीं कर सकते हैं, लेकिन सही पथ को समझना होगा। जैसे पूरे पथ '/ usr/bin/php myscript.php' का उपयोग करके या' php' को कॉल करके और बाद में उपयोग किए जाने वाले चर में परिणाम लिखकर इसे गतिशील रूप से ढूंढना। – Hafenkranich

10

पिछले पोस्टर कहा ..

आप PHP एक कमांड लाइन उपकरण ... अपने कुटिया पंक्ति कुछ ऐसी दिखाई जाने की आवश्यकता के रूप में स्थापित किया है (#!): #!/usr/bin/php

जबकि यह सच हो सकता है ... सिर्फ इसलिए कि आप php में टाइप कर सकते हैं इसका मतलब यह नहीं है कि PHP कहां जा रहा है .../usr/bin/php एक आम स्थान है ... लेकिन किसी भी शेबांग के साथ ... इसे आपके env के अनुरूप बनाया जाना चाहिए।

पता लगाने के लिए एक त्वरित तरीका है, जहां आपके विशेष निष्पादन अपने $PATH पर स्थित है, कोशिश .. ➜ which -a phpENTER, जो मेरे लिए की तरह लग रहा ..

php is /usr/local/php5/bin/php
php is /usr/bin/php
php is /usr/local/bin/php
php is /Library/WebServer/CGI-Executables/php

पहला एक डिफ़ॉल्ट है जो मुझे मिलेगा अगर मैंने अभी php में टाइप किया है एक कमांड प्रॉम्प्ट ... लेकिन मैं उनमें से किसी भी शेबैंग में या सीधे उपयोग कर सकता हूं ... आप निष्पादन योग्य नाम को env के साथ भी जोड़ सकते हैं, जैसा कि अक्सर देखा जाता है, लेकिन मुझे वास्तव में पर भरोसा नहीं है। XOXO।

1

यह पता लगाने का एक त्वरित तरीका है कि आपका विशेष निष्पादन योग्य आपके $ पाथ पर स्थित है, कोशिश करें।

पता लगाने के लिए जहां php है यहां तक ​​कि सबसे तेज तरीका है ...

whereis php 

मैं debian चल रहा हूँ और कमांड ऊपर मुझे दिखा

php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz 

आशा है कि मदद करता है।

10
#!/usr/bin/env bash 
PHP=`which php` 
$PHP /path/to/php/file.php 
संबंधित मुद्दे