Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2015, 12:37
Avatar de Goullak
Goullak
 
Fecha de Ingreso: junio-2014
Mensajes: 32
Antigüedad: 10 años, 6 meses
Puntos: 0
Cronjob no ejecuta PHP

Hola compañeros,

Estoy intentando programar mediante cronjob varios PHP pero pasa completamente de mí.

Así está el cronjob, donde las rutas son correctas:

* * * * * /usr/bin/php /kunden/homepages/45/d3251151/htdocs/web/_cronjobs/application/controllers/updates.php

Uno de estos PHP actualiza la base de datos con unas estadísticas que genera la web y además, actualiza el sitemap:

Código PHP:
<?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;
    }
}
¿Que estoy haciendo mal? ¿Puede que no sea suficiente hacer la llamada directamente desde el cronjob a esta clase Updates y deba de ser llamada por alguien?

Gracias!