Problemas para crear cronjob (tarea programable)
Publicado por Albertio (2 intervenciones) el 06/03/2015 11:52:20
Buenos días,
Estoy trabajando bajo una aplicación en Codeigniter y quiero programar que una vez al día se ejecuten mediante cronjobs una serie de scripts. Anteriormente esto funcionaba correctamente en otro hosting pero después de hacer una migración ha dejado de funcionar, ya que hay que volver a crear estos cronjobs.
Quiero que se ejecute todos los días /web/_cronjobs/application/controllers/updates.php. Este realiza una actualización en la base de datos de la estadística interna de la web y lo mas importante, una actualización del sitemap. Aquí dejo el código:
Estoy ejecutando esta sentencia desde PuTTY:
/usr/bin/php5.5 /kunden/homepages/45/*******/htdocs/web/_cronjobs/application/controllers/updates.php
Pero me muestra un error en la linea 3 indicando que no encuentra el Controller indicado en el extends. Creo que esto es porque intento ejecutar directamente el controlador. En este caso, ¿que es lo que debería de ejecutar para que realice la funcionalidad de este controlador?
La estructura de archivos de esta carpeta _cronjobs es la que suele aparecer en Codeigniter y es la siguiente:
config
controllers (donde se encuentra el updates.php y otros controladores que necesito también programar su ejecución)
errors
helpers
hooks
language
libraries
models
plugins
views
Gracias compañeros!
Estoy trabajando bajo una aplicación en Codeigniter y quiero programar que una vez al día se ejecuten mediante cronjobs una serie de scripts. Anteriormente esto funcionaba correctamente en otro hosting pero después de hacer una migración ha dejado de funcionar, ya que hay que volver a crear estos cronjobs.
Quiero que se ejecute todos los días /web/_cronjobs/application/controllers/updates.php. Este realiza una actualización en la base de datos de la estadística interna de la web y lo mas importante, una actualización del sitemap. Aquí dejo el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?php
class Updates extends Controller
{
function Updates()
{
parent::Controller();
// $this->output->enable_profiler(TRUE);
}
function index($check=NULL)
{
$this->misc($check);
$this->sitemaps($check);
}
/*
*
* actualizaciones varias
*
*/
function misc($check=NULL)
{
$carry = $check=='cron'
? chr(13)
: '<br />';
echo 'Inicio misc: ',date('h:i:s') . $carry;
// $this->load->model('admin/category_model');
// $this->lang->load('admin/categories');
/*
*
* Actualizar los contadores de catalogs, directories y requests
*
*/
$tmp = $this->db->select('id, catalogs_count, directories_count, requests_count')->get('categories')->result_array();
foreach ($tmp as $row)
{
// actualizar contador catalogs
$row['catalogs_count'] = $this->db->where('category_id', $row['id'])->count_all_results('catalogs_categories');
// actualizar contador directories
$row['directories_count'] = $this->db->where('category_id', $row['id'])->count_all_results('directories_categories');
// actualizar contador requests
$row['requests_count'] = $this->db->where('category_id', $row['id'])->count_all_results('requests_categories');
// actualizar contador total
$row['count'] = $row['catalogs_count']+$row['directories_count']+$row['requests_count'];
$this->db->where('id', $row['id'])->update('categories', $row);
}
echo 'Categories: actualizar los contadores de catalogs, directories y requests.' . $carry;
echo 'Fin: ',date('h:i:s') . $carry . $carry;
}
/*
*
* Generar SITEMAP
*
*/
// *TODO: separar en varios sitemaps: catalogs, directories, requests, etc.
function sitemaps($check=NULL)
{
$carry = $check=='cron'
? chr(13)
: '<br />';
echo 'Inicio sitemaps: ',date('h:i:s') . $carry;
$this->load->model('sitemap_model');
$data = array();
// Inicio
array_push($data, array(
'loc' => '',
'lastmod' => date('Y-m-d'),
'changefreq' => 'daily',
'priority' => 1
));
// empresas
$tmp = $this->sitemap_model->get_sitemap('directories'); // pasar como parametro qué datos obtener: catalogs, directories, requests...
foreach ($tmp as $row)
{
array_push($data, array(
'loc' => get_friendly_url('directories', $row),
'lastmod' => date('Y-m-d', strtotime($row['modified'])),
'changefreq' => 'daily',
'priority' => 1
));
}
unset($tmp);
// productos
$tmp = $this->sitemap_model->get_sitemap('catalogs');
foreach ($tmp as $row)
{
array_push($data, array(
'loc' => get_friendly_url('catalogs', $row),
'lastmod' => date('Y-m-d', strtotime($row['modified'])),
'changefreq' => 'daily',
'priority' => 1
));
}
unset($tmp);
// trabajos
$tmp = $this->sitemap_model->get_sitemap('requests');
foreach ($tmp as $row)
{
array_push($data, array(
'loc' => get_friendly_url('requests', $row),
'lastmod' => date('Y-m-d', strtotime($row['created'])),
'changefreq' => 'daily',
'priority' => 1
));
}
unset($tmp);
// páginas estáticas
$tmp = array(
PAGES_FAQ_URL.'.html',
PAGES_ABOUT_URL.'.html',
PAGES_CONTACT_URL.'.html',
PAGES_PRIVACY_URL.'.html',
PAGES_COPYRIGHT_URL.'.html',
PAGES_WORK_WITH_US_URL.'.html',
);
foreach ($tmp as $row)
{
array_push($data, array(
'loc' => $row,
'lastmod' => '',
'changefreq' => 'monthly',
'priority' => 0.5
));
}
unset($tmp);
// crear sitemap
$this->output->set_header("content-type: text/xml");
$body = $this->load->view('sitemaps/index', array('list'=>$data), TRUE);
// crear archivo XML
$filename = '../sitemap.xml';
if (file_exists($filename))
{
unlink($filename);
}
$ddf = fopen($filename, 'w');
fwrite($ddf, $body);
fclose($ddf);
echo 'sitemap.xml creado.' . $carry;;
echo 'Fin: ',date('h:i:s') . $carry . $carry;
}
}
Estoy ejecutando esta sentencia desde PuTTY:
/usr/bin/php5.5 /kunden/homepages/45/*******/htdocs/web/_cronjobs/application/controllers/updates.php
Pero me muestra un error en la linea 3 indicando que no encuentra el Controller indicado en el extends. Creo que esto es porque intento ejecutar directamente el controlador. En este caso, ¿que es lo que debería de ejecutar para que realice la funcionalidad de este controlador?
La estructura de archivos de esta carpeta _cronjobs es la que suele aparecer en Codeigniter y es la siguiente:
config
controllers (donde se encuentra el updates.php y otros controladores que necesito también programar su ejecución)
errors
helpers
hooks
language
libraries
models
plugins
views
Gracias compañeros!
Valora esta pregunta


0