Está en la página 1de 30

Qu es el cron de drupal?

EslamaneraquetieneDrupaldeejecutartareasconuna frecuenciaestablecida.Porejemplo,todoslosdasalas 12delanoche,unavezalasemana,unavezalmes,etc. Usualmenteseusapara:

Tareasdelimpieza Tareaspesadas,queconsumiranmuchosrecursosdeejecutarse deunasolavez.Porejemplo,envomasivodecorreos. Tareasquedependendeltiempo:porejemplo,alarmas, desactivarunaencuestaluegoqueyapassutiempode vigencia.

Cmo ejecuto el cron?

Llamandoalarchivocron.phpenlarazdenuestrositio. Esdeciralgocomohttp://www.misitio.com/cron.php Estearchivonosdevuelveunapginaenblanco. EsunadelaspocasllamadasdeDrupalquesehacensin pasarporelindex.php EnAdministrar>Informes>InformedeEstado (admin/reports/status)podemosver:

Cuandofuelaltimavezqueseejecutelcron Unenlaceparaejecutardirectamenteelcron

Por qu es importante?

Permitequealgunastablasdelabasededatosno crezcandemaneraindefinida,afectandola performancedelsitio. Podemoshacerqueseactualiceinformacinde maneraperidica:contenidodebsqueda,feeds, etc. Ejecucindetareasquedependendeltiempooson muypesadasparaejecutarseunasolavez.

Cada cuanto tiempo debo ejecutar el cron?

Eltiempodependedeelsitiowebydelosmdulos instalados. Unaguapuedeser,de1vezaldaparaunsitio personal,ydepocashorasparaunsitiom s grande. Otrasconsideraciones:funcionalidadcomo bsquedasquenecesitancontenidoindexado, envodecorreos,etc.

Proteccin del cron

Elcronnoestprotegido.Cualquieralopuede ejecutar,estandologueadoono. Endrupal7,estohasidomejorado.Paracorrerel cronsenecesitaenviarunallaveapropiada.

Tareas que realiza el cron Core Drupal (1)

Aggregator,actualizalosfeeds Databaselogging(dblog).Esunmduloqueguarda logsenlatabla{watchdog}.Alejecutarelcron borralosmensajesdelogsqueestnporencima delacantidadconfigurada(Administrar >ConfiguracindelSitio>Registroyalertas >Descartarasientosdelregistromsalldel siguientelmitedeentradas:Nmero)

Tareas que realiza el cron Core Drupal(2)

Filter,borrainformacindelatabla{cache_filter} Node,borralosregistrosdelatabla{history}quetengan unaantiguedadmayora30das.Latabla{history} guardaunregistrodelaltimavisitadelusuarioaun nodo. Ping,notificaaotrosservidoresdecambiosenelcontenido drupal(solodelosnodos,noincluyedeusuariosuotros aspectos). Poll(encuestas),cierralasencuestasquehanexcedidosu tiempopermitido

Tareas que realiza el cron Core Drupal(3)

Search,indexacontenidonuevo.Llamaal hook_update_indexdecadaunodelosmdulos. Statistics,borrainformacindelatabla{accesslog}queha excedidoeltiempoconfigurado. System,limpialastablas{flood}y{batch}yarchivos temporalesdelatabla{files}.Ademsborraregistrosde lastablasdecache{cache},{cache_block}, {cache_filter},{cache_page},{cache_form}, {cache_menu}yotrastablasdecacheindicadasporotros mdulos(hook_flush_caches).

Tareas que realiza el cron Core Drupal(4)

Trigger,ejecutaalgunasaccionesconfiguradas Update,revisasihayactualizacionesdisponibles.

Tareas que realiza el cron Mdulos Contribuidos(1)

Simplenews,envacorreosquelostieneenlacola deenvo.

Cmo ejecuto el cron? (1)


Alternativa1:Mesiento enlacomputadora, cronmetroenmano, paravisitarlapgina cadavezquesecumpla eltiempo.

Cmo ejecuto el cron? (2)


Alternativa2:Ponemosun robotquesedediquea visitarlapginaenel tiempoespecificado. Tambinhayrobotsvirtuales queimitanel comportamientohumano llamadosbot,yquepodra serunaalternativa,perono necesitamostanta sofisticacin.

Cmo ejecuto el cron? (3)


Alternativa3:Ponemosun demonioquesedediquea visitarlapginaenel tiempoespecificado. Eldemonio(daemon)que necesitamossellamacrond yestdisponibleen sistemastipoUnix(Linux, BSD,MacOSX,etc.).

Cmo ejecuto el cron? (4) El Alimento de cond

Eldemoniocrondconsumela informacindearchivosde configuracinllamados crontab. Crondleeelcrontabcada60 segundosenbuscade cambios. Laformamssencilladeeditar estearchivocrontabdel usuarioactualesusarla ordencontrabe,queabrir elarchivoeneleditor configurado.

Cmo ejecuto el cron? (5) Estructura de crontab

Parahacerqueunatareaseejecutecadaciertotiempo,puedo indicarloeditandoelarchivocrontab. Lasordenesdelcrontabvanenlneasquetienenlasiguiente estructura.

Campos de crontab

minutos(059)horas(023)das(131)meses(112)diaSemana(06o17) comando Cadacampodetiempoesunentero Un*indicatodaslasocurrenciasdeesadimensintemporal Paraindicarunrangoseponenlosnmerosseparadospor,porejemplo5 10enelcampominutosignificaqueenunahoralosminutosdel5al10 seejecutarlaorden Siqueremosindicarvariosvalores,sepuedecolocarlosnmerosseparados porcoma,porejemplo3,4,5eneslcampominutosignificaqueenesos minutosseejecutarlaorden. Laalmohadillasirveparaponercomentarios

Uso el crontab para que Firefox visite mi sitio?

Esunaposibilidad,peronoesconveniente. Lomejoresusaralgnprogramaqueseamuchomseficienteyque funcionesinGUI,soloconlneadecomandos. Losmsusadosson:

lynx,navegadorwebenmodotexto wget,herramientaparadescargadecontenidosweb curl,esunaherramientaparatransferirarchivos

Conlostresprogramaspodemosvisitarnuestrositioweb Ademssepodrausarelmdulodrushencombinacinconelcron. Drushesunmduloquepermiteejecutarvariastareasdrupal desdelneadecomandos.

Ejemplo de scripts

45****/usr/bin/lynxsourcehttp://example.com/cron.php 45****/usr/bin/wgetOqt1 http://www.example.com/cron.php 45****curlsilentcompressedhttp://example.com/cron.php

Cmo lo hago en mi servidor? (1)

Sitengoaccesossh,puedoutilizarlasmismas ordenesdecrontabe,oeditarelarchivocrontab directamente. Sitengounpaneldecontrol,puedeutilizarla interfazwebquemedaaccesoalcrontab.

Cmo lo hago en mi servidor? cpanel (2)

Cmo lo hago en mi servidor? cpanel (3)

Cmo lo hago en mi servidor? cpanel (4)

Cmo lo hago en mi servidor? cpanel (5)

Cmo lo hago en mi servidor? cpanel (6)

Cmo lo hago en mi servidor? godaddy (7)

Cmo lo hago en mi servidor? godaddy (8)

Qu hago si mi hosting no me da esta opcin?

Por qu Drupal no lo puede hacer solo?


PHPesunlenguajeinterpretadoquecuandoseusaenun servidorweb(ejemploApache)seconfiguraeltiempo mximodeejecucindeunscript,enelarchivode configuracinphp.ini,tenemosladirectiva max_execution_time,oconlafuncinset_time_limit. Noquedanprocesoscorriendodemaneracontinua. Detodasmanerashayformaatravsdeunmduloque drupalhagaeltrabajo(mduloPoormanscron)

Para desarrolladores (1)


Sideseamosqueelmduloqueestamosdesarrollando ejecutealgunatareaperidicapodemosimplementarel hook_cron. Elcdigoqueestdentrodeestehookseejecutaral llamarseelcron.

Para desarrolladores (2)


Elregistro,ensegundos,delaltimavezquese ejecutelcronsealmacenaenlatabla{variable}con elnombrecron_last,ysepuedeobtenermediantela funcinvariable_get($name,$default).

Tambinfuncionanvariable_set($name,$value)y variable_del($name),paracambiarelvaloryborrar estavariableperonoesrecomendableusarlas.

También podría gustarte