Jump to content

timeout PHP et OVH performance 1


Recommended Posts

Bonjour,

 

je rencontre un problème lors de la génération de mes factures, impossibles de générer les factures les jours de plus de 100 commandes.

 

Apparemment impossible de modifier le "max_timeout" php sur ovh !!??

 

Mais alors comment faire?  obliger de me taper toutes les factures une par une, passer sur un VPS ?

utiliser un script qui fractionne les factures ??

 

Si quelqu'un à déjà rencontré ce problème merci de me guider :)

Link to comment
Share on other sites

Bon matin,

 

L'alternative hébergement reste le mieux : Le max_timeout est modifiable, mais cela dépends effectivement de l'hébergeur. Si votre hébergeur ne veut pas vous y laisser l'accès, ou le modifié, je dirais que changer de plan d'hébergement serait le mieux. Vers un VPS, surtout si votre taux de commande est de plus de 100 par jours, je dirais que le changement sera bénéfique au niveau de la performance.

 

L'alternative d'utilisation : Les généré un par un semble une tâche très...disons simplement agaçante.

 

L'alternative programmation : Il faudrait que vous ayez l'option de temps (datetime au lieu de date) dans AdminInvoice. Il faudrait faire un override et donner cette option. Quelle version de PS avez vous?

 

Cordialement,

 

Martin.

Edited by Martin Uker K (see edit history)
Link to comment
Share on other sites

Vous avez un accès FTP ou un accès à vos fichier?

 

Un upload d'un fichier et l'effacement de class_index par la suite devrait fonctionner dans votre cas...

 

Je ne peux pas uploadé de fichier sur le forum (j'ai hate à cette permission)...Donc voici ce que vous devez faire :

 

1. Créez un fichier "AdminInvoicesController.php", mettre le contenu suivant dedans et sauvegardez :

<?php

class AdminInvoicesController extends AdminInvoicesControllerCore
{

    public function initFormByDate()
    {
        //Doing datetime instead.
        $this->fields_form = array(
            'legend' => array(
                'title' => $this->l('By date'),
                'icon' => 'icon-calendar'
            ),
            'input' => array(
                array(
                    'type' => 'datetime',
                    'label' => $this->l('From'),
                    'name' => 'date_from',
                    'required' => true,
                    'hint' => $this->l('Format: 2011-12-31 12:00:00 (inclusive).')
                ),
                array(
                    'type' => 'datetime',
                    'label' => $this->l('To'),
                    'name' => 'date_to',
                    'required' => true,
                    'hint' => $this->l('Format: 2011-12-31 23:59:59 (inclusive).')
                )
            ),
            'submit' => array(
                'title' => $this->l('Generate PDF file by date'),
                'id' => 'submitPrint',
                'icon' => 'process-icon-download-alt'
            )
        );

        //Half of day instead, works like a charm.
        $this->fields_value = array(
            'date_from' => date('Y-m-d 00:00:00'),
            'date_to' => date('Y-m-d 12:00:00')
        );

        $this->table = 'invoice_date';
        $this->show_toolbar = false;
        $this->show_form_cancel_button = false;
        $this->toolbar_title = $this->l('Print PDF invoices');
        return parent::renderForm();
    }
    
     public function postProcess()
    {
        if (Tools::isSubmit('submitAddinvoice_date')) {
            if (!Validate::isDate(Tools::getValue('date_from'))) {
                $this->errors[] = $this->l('Invalid "From" date');
            }

            if (!Validate::isDate(Tools::getValue('date_to'))) {
                $this->errors[] = $this->l('Invalid "To" date');
            }
            if (!count($this->errors)) {
                // Yeah I hate to do that, but else we got to override "OrderInvoice" too, because it does a SQL date difference of -1...so we cancel it here...
                $date_to = Tools::getValue('date_to');
                $date = new DateTime($date_to);
                $date->modify('-1 day');
                $date_to = $date->format('Y-m-d H:i:s');

                if (count(OrderInvoice::getByDateInterval(Tools::getValue('date_from'), $date_to))) {
                    Tools::redirectAdmin($this->context->link->getAdminLink('AdminPdf').'&submitAction=generateInvoicesPDF&date_from='.urlencode(Tools::getValue('date_from')).'&date_to='.urlencode($date_to));
                }

                $this->errors[] = $this->l('No invoice has been found for this period.');
            }
        } else {
            parent::postProcess();
        }
    }

}

2. Mettre ce fichier dans le dossier "/override/controllers/admin" de votre PrestaShop (Via FTP)

3. Effacer le fichier "/cache/class_index.php" (Il se regénérera au prochain call sur app)

 

Si vous n'êtes pas à l'aise, vous pouvez me PM les accès de votre FTP et admin pour que je m'en occupe, mais je ne pourrai le faire que dans une dizaine d'heures, je suis occupé pour le moment.

 

Martin.

 

edit : Modifié suite à commentaire #8-9
h->H pour bon fonctionnement

Edited by Martin Uker K (see edit history)
Link to comment
Share on other sites

eh bien, si tu as suivi toute la procédure :

 

Ton affichage de Commandes>factures devrait maintenant avoir une date avec un temps. Donc tu peux généré sur une nouvelle borne -> le temps.

 

Ainsi, si ta journée complète génère un timeout : Prend un plage plus petite comme : de 00:00:00 à 12:00:00. Ça ne devrait plus généré de timeout.

 

C'est un contournement par contrôle.

 

Si tu n'as pas de temps disponible dasn ton admin et que tu as suivi mes étapes, il y a un problème dans l'endroit que tu as mis le fichier ou dans ta cache...Ou les étapes que j'ai donné étaient mal expliqués!

 

Cordialement,

 

Martin.

Edited by Martin Uker K (see edit history)
Link to comment
Share on other sites

post-1077572-0-33879900-1486658668_thumb.pngnous avons répondu en même temps :)

nickel j'ai bien les tes modifs, par contre cela ne fonctionne pas :(

je choisi ma date dans mon cas

 

du: 15/01 11h00 ( heure du debut de la vente)

au: 15/01 13h00

 

post-1077572-0-28293100-1486658366_thumb.png

 

je clique sur générer un fichier PDF

 

et la j'ai: aucune facture trouvée pour cette période

 

post-1077572-0-87287000-1486658442_thumb.png

 

Par contre si je choisi la date en laissant les heures par defaut cela fonctionne

 

post-1077572-0-33879900-1486658668_thumb.png

 

je viens de verifier:

 

le 15 / 01

 

de 00H00 à 12h00 > 175 ventes  generation OK avec ta modif, en laissant les parametres par defaut)

de 12h00 à 23H00 > 31 ventes    generation KO puisque qu'il faut changer la tranche horaire par défaut (enfin apparemment cela viens de la)

 

Meme si il y a un petit bug cela me va, 175 facture générer automatiquement sans devoir me les faire une par une :)

 

encore merci et bonne journée a toi

Edited by Lugio (see edit history)
Link to comment
Share on other sites

Woops, désolé c'était fait à la volée!

 

Change la ligne 65 de mon fichier :

$date_to = $date->format('Y-m-d h:i:s');

à

$date_to = $date->format('Y-m-d H:i:s');

Un léger problème de format. Le h minuscule génère une heure sur 12, alors que le majuscule c'est sur 24. Mon erreur! Change et repousse le fichier.

 

Martin.

Link to comment
Share on other sites

Yesss !!!! ca marche nickel maintenant

 

tu n'as pas a t'excuser quand même :)

Des semaines que je cherche une solution et toi en 5 mins tu a réglé le problème !!

 

tu viens de me rendre un grand service et surement à plein de personne dans mon cas.

 

merci beaucoup

Edited by Lugio (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Bonjour Martin Uker K, 

Je pense avoir le même problème de timeout PHP, mais pas pour mes factures (mon site n'est pas encore en ligne). Prestashop n'arrive pas à générer mes déclinaisons de produit en temps imparti et cela conduit à une page blanche erreur 500.

Comment faire pour allouer plus de temps à l'execution du script, je suis aussi chez OVH.

Merci d'avance

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous

J'ai le même soucis lors de la génération de miniature sous Prestashop 1.6. Suis passé en PHP 7.0 rien à faire

J'ai lu qu'il faudrait créer une tâche cron mais n'étant pas codeur je ne sais pas faire

Merci de votre aide

 

Bertrand

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...