Come posso impedire che le attività cron vengano attivate dai visitatori del sito?


12

I registri del mio sito mostrano che cron viene attivato se qualcuno visita il sito Web. Questo sta rallentando il tempo di caricamento per la prima visita.

Il cron è configurato per funzionare ogni 3 ore qui: Amministrazione »Configurazione» Sistema »Cron .

Come posso eseguire il cron programmato e non attivato dai visitatori?

Risposte:


9

Dovresti iniziare leggendo le pagine del manuale di Drupal su cron per ottenere background e comandi da eseguire.

  • Se si dispone dell'accesso shell / SSH al server (Linux), è possibile eseguire run crontab -u www-data -eper modificare la tabella cron per l'utente Web. Dovresti essere in grado di utilizzare i dettagli nel link sopra per impostare le esecuzioni cron corrette tutte le volte che vuoi.
  • Se utilizzi l'hosting condiviso senza accesso alla shell, dovrai utilizzare il pannello di controllo del tuo host web (CPanel, Plesk ecc.) Per accedere e aggiungere un '"Attività pianificata". Questo fornisce come interfaccia web alle schede cron, quindi saranno necessarie le stesse impostazioni.
  • Se questi non sono disponibili, dovrai chiedere alla tua società di hosting di aiutarti, ma ci sono anche servizi gratuiti ea pagamento che puoi usare per chiamare la cron.phppagina da remoto per te. Vedi Set Cron Job per esempio.

Dai un'occhiata al modulo Elysia Cron se vuoi di più da cron in generale: ha una buona documentazione e ti consente di controllare con precisione quali attività vengono eseguite quando.

Infine, ricorda di disabilitare il sito che lo esegue quando i visitatori arrivano in Amministrazione »Configurazione» Sistema »Cron quando sei riuscito a configurarlo.


Ho accesso alla shell. So come impostare cron job. Quindi lo capirò. Ma grazie per aver riassunto tutte le informazioni.
Cateye,

Ma quello che non capisco è perché Drupal si comporti come adesso. Se la configurazione di base è programmata per eseguire il cron ogni 3 ore, perché attende un visitatore?
Cateye,

1
Ci sto pensando. Ovviamente Drupal non ha modo di eseguire un processo cron senza il bootstrap. E il bootstrap si verifica quando un visitatore colpisce il sito. Quindi, il riepilogo è: Se vuoi lavori cron realmente programmati, devi impostarlo sul lato server.
Cateye,

2
Esattamente. Non succede nulla su un server senza qualcuno o qualcosa che lo esegue. L'impostazione predefinita di Drupal 7 è eseguire cron quando gli utenti arrivano occasionalmente per garantire l'esecuzione delle attività chiave. Drupal 6 ha fatto affidamento sul modulo Cron di Poor Man per farlo in assenza di un cron job adeguato ... e quasi tutto in Drupal ha bisogno che il bootstrap avvenga per primo. Un lavoro cron corretto sul server è sicuramente l'opzione migliore.
Jim Kirkpatrick,

1
La RISPOSTA SOTTO descrive come risolverlo. Non questo :(
Tomáš Fejfar il

13

Drupal 7 ha incorporato nei suoi moduli il codice che si trovava in Poormanscron , il cui scopo è esattamente quello di eseguire attività cron di Drupal su un sito in cui non è possibile impostare attività cron, quando un utente visita il tuo sito e ogni X ore (come impostato in la pagina che hai visto).

Se vuoi evitare questo comportamento, devi solo impostare "Esegui cron ogni" su "Mai"; contrariamente a quanto potrebbe sembrare, ciò influenza solo ciò che accade quando gli utenti visitano il tuo sito. [1] Puoi comunque eseguire attività cron di Drupal dall'esterno di Drupal, ricordando che in Drupal 7 cron.php deve essere invocato, dall'esterno di Drupal, passando il valore mostrato in "Amministrazione> Rapporti> Rapporto sullo stato".

 

immagine dello schermo

 

 

 

 

 

[1]: In realtà, né cron.php , né drupal_cron_run () controlla la variabile Drupal utilizzata nella pagina delle impostazioni. Le uniche variabili Drupal utilizzate sono:

  • "cron_key" che contiene la chiave cron utilizzata per evitare che le attività cron di Drupal vengano eseguite da utenti non autorizzati
  • "modalità_stampa" impostata su TRUEquando il sito è in modalità manutenzione
  • "cron_last" che contiene il timestamp di quando le attività cron sono state eseguite l'ultima volta

L'unica difficoltà è quando il cron job scade ogni volta che visualizzi la pagina e non riesci nemmeno ad accedere come amministratore per disabilitarlo! sospiro ... lo

Sì, l'ho risolto rapidamente impostando un monitor di uptime Montastic che "controlla" l'URL di attivazione cron ogni 6 ore ...
Anders,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.