लारवेल 5 - साझा होस्टिंग सर्वर में स्पष्ट कैश


125

सवाल बहुत स्पष्ट है।

php artisan cache:clear

क्या CLI का उपयोग करके ऊपर दिए गए कैश को निकालने के लिए कोई समाधान है। मैं एक लोकप्रिय साझा होस्टिंग सेवा का उपयोग कर रहा हूं, लेकिन मेरी योजना के अनुसार, मेरे पास नियंत्रण कक्ष पहुंच नहीं है।

** मैं विचार कैश को साफ करना चाहता हूं।

मैंने एक प्रश्न लगभग इसी रूप में देखा , लेकिन यह मेरी मदद नहीं करता है।


2
साझा होस्टिंग पर लारवल चलाना पागलपन है, IMO, ठीक इसी तरह के कारण के लिए। आप कैसे पलायन कर रहे हैं?
सिजयोज़

@ceejayoz .. दरअसल मैंने अभी इस प्रोजेक्ट को शुरू किया है, और यह मेरा पहला लार्वा प्रोजेक्ट भी है। मैं इस प्रवास की बात पर अभी तक नहीं आया था ..
रिंटो जॉर्ज

11
"साझा होस्टिंग पर रनिंग लारवेल पागल है" @ceejayoz ... लेकिन यह वास्तविक दुनिया है। कभी-कभी आपके पास होता है क्योंकि वहाँ कोई विकल्प नहीं है।
elb98rm

2
@ elb98rm डिजिटल महासागर से एक VPS $ 5 / माह से शुरू होता है। हमेशा एक विकल्प होता है, जिसमें क्लाइंट के लिए काम नहीं करना शामिल है जो होस्टिंग के लिए $ 5 / महीने का भुगतान करने के लिए तैयार नहीं है।
ceejayoz

19
@ceejayoz प्रासंगिक नहीं है - अक्सर मैंने उन जगहों के लिए काम किया है जहां यह पैसा नहीं है, यह संबंध या मेजबान और आंतरिक राजनीति है। इसके अलावा - कभी-कभी यह सचमुच आपके पूरे विभाग तक नहीं होता है। वास्तविक दुनिया का मतलब है कि आपको कभी-कभी किसी स्थिति के साथ काम करने की आवश्यकता है। यदि आप कभी किसी अन्य व्यक्ति की पसंद के साथ काम नहीं करना चाहते हैं तो आप भाग्यशाली हैं या
आश्रयहीन हैं

जवाबों:


146

आप CLI के बाहर एक कारीगर कमांड को कॉल कर सकते हैं।

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    // return what you want
});

आप यहाँ आधिकारिक दस्तावेज देख सकते हैं http://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli


अपडेट करें

दृश्य कैश को हटाने का कोई तरीका नहीं है। न ही php artisan cache:clearऐसा करता है।

यदि आप वास्तव में दृश्य कैश को साफ़ करना चाहते हैं, तो मुझे लगता है कि आपको अपनी खुद की artisanकमांड लिखनी होगी और इसे कॉल करना होगा जैसा कि मैंने पहले कहा था, या पूरी तरह से artisanपथ को छोड़ दें और किसी वर्ग या नियंत्रक से कॉल करने वाले किसी वर्ग में दृश्य कैश को साफ़ करें।

लेकिन, मेरा असली सवाल यह है कि क्या आपको वास्तव में कैश को देखने की आवश्यकता है ? अब मैं जिस प्रोजेक्ट पर काम कर रहा हूं, उसमें मेरे लगभग 100 कैश्ड विचार हैं और उनका वजन 1 एमबी से कम है, जबकि मेरी vendorनिर्देशिका> 40 एमबी है। मुझे नहीं लगता कि कैश डिस्क उपयोग में एक वास्तविक अड़चन है और इसे साफ़ करने के लिए कभी वास्तविक आवश्यकता नहीं थी।

के रूप में आवेदन कैश , यह में संग्रहित है storage/framework/cacheनिर्देशिका है, लेकिन आप के लिए कॉन्फ़िगर ही अगर fileमें चालक config/cache.php। फ़ाइल-आधारित कैश पर प्रदर्शन को बेहतर बनाने के लिए, आप Redis या Memcached जैसे कई अलग-अलग ड्राइवर चुन सकते हैं ।


1
आप किस कैश को साफ़ करने की कोशिश कर रहे हैं? cache:clearआदेश के साथ काम करता एप्लिकेशन को कैश , एक है कि तक पहुँच जाता है Cacheमुखौटा।
मार्को पलांटे

मैं दृश्य कैश को साफ़ करना चाहता हूं, दृश्य कैश फ़ोल्डर में बहुत सारे पृष्ठ सहेजे गए हैं। एक और सवाल, जब एप्लिकेशन कैश कहता है, जो सभी निर्देशिकाएं हैं जो इसे लक्षित करती हैं।
रिंटो जॉर्ज

स्पष्टीकरण के लिए धन्यवाद!। मुझे चिंता नहीं है कि बॉटर डिस्क स्पेस :) लेकिन एक सवाल है कि अगर कैश क्लियर नहीं हो रहा है, तो वेबसाइट में देखने के नए बदलाव कैसे प्रभावित होते हैं, क्या यह है कि किसी भी आई / ओ चेक में लार्वेल हो रहा है?
रिंटो जॉर्ज

1
मुझे लगता है कि यह फाइलों पर एक टाइमस्टैम्प जाँच करता है, जो कि ब्लेड टेम्पलेट के पुनर्निर्माण की तुलना में तेज है
मार्को पलांटे

हाँ, मुझे ऐसा लगता है, वैसे भी आपने मुझे सही तरीके से सोचने में मदद की, धन्यवाद!
रिंटो जॉर्ज जूल

61

मुझे उम्मीद है इससे किसी को सहायता मिलेगी

पर जाएं laravelFolder/bootstrap/cacheतो नाम बदलने config.phpके लिए कुछ भी आप चाहते हैं जैसे करने के लिए। config.php_oldऔर अपनी साइट को पुनः लोड करें। जिसे वूडू की तरह काम करना चाहिए।

हैप्पी कोडिंग ...


मैं इस बात की पुष्टि करता हूँ। लार्वा 5.4 में काम करता है। मुझे बांधता है।
सिमोन

1
एक और एकमात्र समाधान! अगर आपको आश्चर्य है कि काम क्यों करता है? केवल भगवान जानता है
लुइस कॉन्ट्रेरास

यह पुष्टि की गई कि ** में दर्द को मिटाया जा सकता है जबकि लार्वा 5.4 को विंडोज़ से साझा की गई होस्टिंग की मेजबानी के लिए .... धन्यवाद !!!
रिकूडो दर्द

ऐसा लगता है कि कुछ परिदृश्यों में, यह एकमात्र समाधान है जो काम करता है। यदि आपके पास कैश्ड कॉन्फ़िगर है, और फिर आप नया कैश्ड कॉन्फ़िगर बनाने के लिए कमांड चलाते हैं, तो आप एक फेकडे या सर्विस प्रोवाइडर को हटा देते हैं, यह मौजूदा कैश्ड कॉनफ़िगर का उपयोग करके चलता है, और फसेड और / या सर्विस प्रोवाइडर क्लासेस को संदर्भित करने का प्रयास करता है। अब मौजूद नहीं है और विफल रहता है। अन्य विकल्प होगा कि आप कॉन्फिगर फाइल से रेफरेंस हटाएं, अपने कैश्ड कॉन्फिगरेशन को रीजनरेट करें, फिर वास्तविक फेसडे और / या सर्विस प्रोवाइडर क्लासेस को हटा दें।
जेसन व्हीलर

1
Laravel 6.6 के लिए, कैशिंग को हटाने के लिए, मैंने अभी cacheफ़ोल्डर और .envफ़ाइल डिफ़ॉल्ट कैश मान को हटा दिया है । लेकिन यह सब फिर से समस्या को हटाने के बाद .. जब php artisan optimize। अंत में इस एक ने मेरी समस्या को हल कर दिया, नाम बदलने से नहीं, बल्कि config.php फ़ाइल में मुख्य मान को बदलते हुए। धन्यवाद @DeadGuy
चंदन शर्मा

49

जैसा कि मैं देख सकता हूं: http://itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html

क्या नई स्पष्ट कैश कमांड के साथ नीचे दिए गए कोड का उपयोग करना संभव है:

//Clear Cache facade value:
Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    return '<h1>Cache facade value cleared</h1>';
});

//Reoptimized class loader:
Route::get('/optimize', function() {
    $exitCode = Artisan::call('optimize');
    return '<h1>Reoptimized class loader</h1>';
});

//Route cache:
Route::get('/route-cache', function() {
    $exitCode = Artisan::call('route:cache');
    return '<h1>Routes cached</h1>';
});

//Clear Route cache:
Route::get('/route-clear', function() {
    $exitCode = Artisan::call('route:clear');
    return '<h1>Route cache cleared</h1>';
});

//Clear View cache:
Route::get('/view-clear', function() {
    $exitCode = Artisan::call('view:clear');
    return '<h1>View cache cleared</h1>';
});

//Clear Config cache:
Route::get('/config-cache', function() {
    $exitCode = Artisan::call('config:cache');
    return '<h1>Clear Config cleared</h1>';
});

सभी को कैश साफ़ करने की संभावना देने की आवश्यकता नहीं है, विशेष रूप से एक उत्पादन वातावरण में, इसलिए मैं उस मार्ग को टिप्पणी करने का सुझाव देता हूं और जब आवश्यकता होती है, तो कोड को डी-कमेंट करने और मार्गों को चलाने के लिए।


1
मुझे यह स्निपेट सबसे ज्यादा मददगार लगा।
हसीब ज़ुल्फ़िकार

मुझे कॉन्फ़िगरेशन में समस्या है: कैश इसकी रूट या कंट्रोलर में काम नहीं करता है, लेकिन दूसरों के काम आता है। क्या समस्या होगी?
नईम

40

कैशिंग कॉन्फ़िगर करें लार्वाल का विन्यास दर्जनों फाइलों में फैला हुआ है, और includingउनमें से प्रत्येक के लिए प्रत्येक अनुरोध एक महंगी प्रक्रिया है। अपनी सभी कॉन्फ़िगर फ़ाइलों को एक में मिलाने के लिए, उपयोग करें:

php artisan config:cache

ध्यान रखें कि एक बार कैश करने पर किसी भी तरह के बदलाव का कोई असर नहीं होगा। कॉन्फिगर कैश को रिफ्रेश करने के लिए उपरोक्त कमांड को फिर से रन करें। यदि आप पूरी तरह से कॉन्फ़िगर कैश से छुटकारा चाहते हैं, तो दौड़ें

php artisan config:clear

राउटर्स की कैचिंग रूटिंग भी लार्वा का एक महंगा काम है। मार्गों को कैश करने के लिए। Php फ़ाइल नीचे दी गई कमांड चलाती है:

php artisan route:cache

दिमाग है कि यह बंद के साथ काम नहीं करता है। यदि आप क्लोजर का उपयोग कर रहे हैं, तो यह उन्हें नियंत्रक में स्थानांतरित करने का एक शानदार मौका है, क्योंकि कारीगर कमांड उन अपवादों को फेंक देगा जब उचित नियंत्रक विधियों के बजाय बंद होने के लिए बाध्य मार्गों को संकलित करने का प्रयास किया जाता है। कॉन्फिगर कैश की तरह ही, मार्गों में परिवर्तन। एफपी पर अब कोई प्रभाव नहीं पड़ेगा। कैश को रीफ्रेश करने के लिए, उपरोक्त कमांड को हर बार चलाएं जब आप रूट फाइल में बदलाव करते हैं। रूट कैश से पूरी तरह से छुटकारा पाने के लिए, नीचे दिए गए कमांड को चलाएं:

php artisan route:clear

क्लासमेट अनुकूलन

यह एक मध्यम आकार की परियोजना के लिए सैकड़ों PHP फ़ाइलों में फैले होने के लिए असामान्य नहीं है। जैसा कि अच्छा कोडिंग व्यवहार हमें निर्देशित करता है, हर चीज की अपनी फाइल होती है। यह, निश्चित रूप से, कमियों के बिना नहीं आता है। लारवेल को प्रत्येक अनुरोध के लिए दर्जनों अलग-अलग फ़ाइलों को शामिल करना पड़ता है, जो कि करना महंगा है।

इसलिए, एक अच्छा अनुकूलन विधि यह घोषित कर रही है कि कौन सी फाइलें हर अनुरोध के लिए उपयोग की जाती हैं (उदाहरण के लिए, आपके सभी सेवा प्रदाता, मिडलवेयर और कुछ और) और उन्हें केवल एक फ़ाइल में मिलाते हैं, जो बाद में प्रत्येक अनुरोध के लिए लोड किया जाएगा। यह आपकी सभी जावास्क्रिप्ट फ़ाइलों को एक में संयोजित करने से अलग नहीं है, इसलिए ब्राउज़र को सर्वर से कम अनुरोध करना होगा।

अतिरिक्त संकलित फ़ाइलें (फिर से: सेवा प्रदाताओं, बिचौलियों और इसी तरह) को आपके द्वारा फाइलों की कुंजी में config / compile.php में घोषित किया जाना चाहिए। एक बार जब आप अपने ऐप के लिए किए गए हर अनुरोध के लिए आवश्यक सब कुछ डालते हैं, तो उन्हें एक फ़ाइल में संक्षिप्त करें:

php artisan optimize --force

संगीतकार ऑटोलैड का अनुकूलन

यह एक लार्वा के लिए ही नहीं है, बल्कि किसी भी अनुप्रयोग के लिए जो संगीतकार का उपयोग कर रहा है।

मैं पहले समझाता हूं कि PSR-4 ऑटोलॉड कैसे काम करता है, और फिर मैं आपको दिखाता हूं कि इसे अनुकूलित करने के लिए आपको क्या कमांड चलाना चाहिए। यदि आप यह जानने में रुचि नहीं रखते हैं कि संगीतकार कैसे काम करता है, तो मैं आपको सीधे कंसोल कमांड पर कूदने की सलाह देता हूं।

जब आप App\Controllers\AuthControllerकक्षा के लिए संगीतकार से पूछते हैं , तो वह पहले कक्षा में एक सीधा जुड़ाव खोजता है। क्लासमेट कक्षाओं और फ़ाइलों के 1-टू -1 संघों के साथ एक सरणी है। चूंकि, निश्चित रूप से, आपने मैन्युअल रूप से लॉगिन क्लास और इसकी संबंधित फ़ाइल को क्लासमैप में नहीं जोड़ा है, संगीतकार आगे बढ़ेगा और नामस्थानों में खोज करेगा। क्योंकि App एक PSR-4 नाम स्थान है, जो कि Laravel के साथ डिफ़ॉल्ट रूप से आता है और यह app/फ़ोल्डर से जुड़ा है , संगीतकार PSR-4 वर्ग के नाम को मूल स्ट्रिंग हेरफेर प्रक्रियाओं के साथ एक फ़ाइल नाम में परिवर्तित करने का प्रयास करेगा। अंत में, यह अनुमान लगाता है कि App\Controllers\AuthControllerएक AuthController.php फ़ाइल में स्थित होना चाहिए, जो Controllers/कि एक फ़ोल्डर में है जो सौभाग्य से नेमस्पेस फ़ोल्डर में होना चाहिए, जो है app/

यह सारी मेहनत केवल यह पाने के लिए कि फाइल App\Controllers\AuthControllerमें क्लास मौजूद है app/Controllers/AuthController.php। संगीतकार को आपके पूरे एप्लिकेशन को स्कैन करने और कक्षाओं और फ़ाइलों के प्रत्यक्ष 1-टू -1 संघ बनाने के लिए, निम्नलिखित कमांड चलाएँ:

composer dumpautoload -o

ध्यान रखें कि यदि आप पहले से ही php कारीगर को ऑप्टिमाइज़ करते हैं --फोर्स, तो आपको अब इसे चलाने की ज़रूरत नहीं है। चूंकि ऑप्टिमाइज़ कमांड पहले से ही एक अनुकूलित ऑटोलॉड बनाने के लिए संगीतकार को बताता है।


30

यह पैकेज php ^ 7.0 और ^ laravel5.5 के लिए है

क्रोनजोब में इस पैकेज का उपयोग करें जो मैंने केवल इस उद्देश्य के लिए बनाया है। मैं भी उसी स्थिति का सामना कर रहा था। https://packagist.org/packages/afrazahmad/clear-cached-data इसे स्थापित करें और चलाएं:

php artisan clear:data

और यह निम्नलिखित आदेशों को स्वचालित रूप से चलाएगा

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache

आशा करता हूँ की ये काम करेगा।

यदि आप इसे विशिष्ट समय पर स्वचालित रूप से चलाना चाहते हैं तो आपको पहले crnjob सेटअप करना होगा। जैसे

 in app/console/kernel.php

शेड्यूल फ़ंक्शन में:

$schedule->command('clear:data')->dailyAt('07:00');

17

मूल रूप से मैं विचार कैश को साफ करना चाहता हूं।

अब इसके लिए लारवेल 5.1 में एक कमांड है

php artisan view:clear

9

आप एफ़टीपी या स्पष्ट storage\framework\viewsफ़ोल्डर के माध्यम से laravel 5या के app\storage\viewsलिए कनेक्ट कर सकते हैं laravel 4


7

CLI के बाहर सभी कैश को साफ़ करने के लिए , यह करें; यह मेरे लिए काम करता है।

Route::get('/clear', function() {

   Artisan::call('cache:clear');
   Artisan::call('config:clear');
   Artisan::call('config:cache');
   Artisan::call('view:clear');

   return "Cleared!";

});

config:cacheस्पष्ट और कैश कॉन्फ़िगरेशन - तो मुझे लगता है कि दोनों को जोड़ने की कोई आवश्यकता नहीं है
राजा खुरेई

ज़रूर। आप बस उस लाइन का उपयोग करें जिसकी आपको आवश्यकता है।
आमोस चिही

4
php artisan view:clear

कैश्ड विचारों को साफ करेगा


कमांड php artisan cache:clear का विकल्प पूछा जाता है। यह स्टोरेज फ़ोल्डर में संग्रहित कैश को साफ नहीं करता है, जो वास्तव में आवश्यक है।
स्पाइडी

2

यदि आप अपनी फ़ाइल Lumenसे उपयोग कर रहे हैं तो आप यह कर सकते हैं :Laravelroutes/web.php

use Illuminate\Support\Facades\Artisan;

$app->get('/clear-cache', function () {
    $code = Artisan::call('cache:clear');
    return 'cache cleared';
});

1

आप इसे फ्रांसेस्को उत्तर के समान राउटर के माध्यम से भी कर सकते हैं, लेकिन राउटर कॉन्फ़िगरेशन में कम अव्यवस्था के साथ

Route::get('/artisan/{cmd}', function($cmd) {
    $cmd = trim(str_replace("-",":", $cmd));
    $validCommands = ['cache:clear', 'optimize', 'route:cache', 'route:clear', 'view:clear', 'config:cache'];
    if (in_array($cmd, $validCommands)) {
        Artisan::call($cmd);
        return "<h1>Ran Artisan command: {$cmd}</h1>";
    } else {
        return "<h1>Not valid Artisan command</h1>";
    }
});

उसके बाद http: //myapp.test/artisan/cache-clear आदि पर जाकर उन्हें रन करें। यदि आपको वैध आर्टिसन कमांड्स जोड़ने / संपादित करने की आवश्यकता है तो बस $ वैध वेरिएंड को अपडेट करें।


1

इसने मेरे लिए काम किया। अपनी परियोजना में: संग्रहण> रूपरेखा> दृश्य पर जाएं। वहां मौजूद सभी फाइलों को डिलीट करें और अपने पेज को रिफ्रेश करें।


1

यह भी कोशिश करो

cli के लिए

php कारीगर स्पष्ट: कैश

कारीगर कमांड का उपयोग करने के लिए

 Route::get('/clear-cache', function() {
 $exitCode = Artisan::call('cache:clear');
 return 'Application cache cleared';

});

[ https://www.tutsmake.com/laravel-clear-cache-use-artisan-command-cli/ पिसाई 1]

  [1]: https://www.tutsmake.com/laravel-clear-cache-using-artisan-command-cli/

1

संगीतकार में त्वरित आदेशों को कॉपी और पेस्ट करने के लिए इस पृष्ठ का कुछ समय उपयोग किया, इसलिए मैंने एक आदेश लिखा जो इन आदेशों को एक एकल कारीगर कमांड में करता है।

namespace App\Console\Commands\Admin;

use Illuminate\Console\Command;

class ClearEverything extends Command
{

    protected $signature = 'traqza:clear-everything';

    protected $description = 'Clears routes, config, cache, views, compiled, and caches config.';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $validCommands = array('route:clear', 'config:clear', 'cache:clear', 'view:clear', 'clear-compiled', 'config:cache');
        foreach ($validCommands as $cmd) {
            $this->call('' . $cmd . '');

        }
    }
}

app\Console\Commands\Adminफ़ोल्डर में रखें

फिर संगीतकार में कमांड चलाएं php artisan traqza:clear-everything

खुश कोडिंग।

जीथब -> https://github.com/Traqza/clear-everything


0

जबकि मैं साझा होस्टिंग (चारों ओर एक बुरा विचार) पर लार्वा ऐप चलाने के विचार से दृढ़ता से असहमत हूं, यह पैकेज आपकी समस्या का समाधान करेगा। यह एक पैकेज है जो आपको वेब से कुछ कारीगर कमांड चलाने की अनुमति देता है। यह एकदम सही है, लेकिन कुछ यूसेकस के लिए काम कर सकता है।

https://github.com/recca0120/laravel-terminal



0

मेरा मानना ​​है कि लार्वा शेड्यूलर कमांड को चलाने के लिए साझा सर्वर व्यवस्थापक पैनल में क्रोन जॉब मॉड्यूल का उपयोग करने के लिए यह अधिक कुशल दृष्टिकोण है, जो कॉन्फ़िगर किए गए कारीगर कमांड को कॉल करेगा, कुछ इस तरह से काम करना चाहिए:

* * * * * /usr/bin/php /var/www/web/artisan schedule:run /dev/null 2>&1

क्रोन में शेड्यूलर सेटअप के साथ, आप सही कारीगर कमांड को कॉल करने के लिए शेड्यूल मेथड को \ App \ Console \ Kernel.php में एडिट कर सकते हैं , कुछ इस तरह:

$schedule->command('queue:work')->cron('* * * * *')->withoutOverlapping();
$schedule->command('route:cache')->cron('0 0 * * *')->withoutOverlapping();

कमांड चलने के बाद आप हमेशा ऊपर की लाइन्स हटा सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.