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:
Código:
Estoy ejecutando esta sentencia desde PuTTY: <?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; } }
/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!