Il modo migliore per chiamare una consuetudine lunga esecuzione programma PHP più e più volte

magento.stackexchange https://magento.stackexchange.com/questions/11273

  •  16-10-2019
  •  | 
  •  

Domanda

ho scritto un programma PHP CLI che io chiamo molte volte in un ciclo, ogni ciclo l'elaborazione di un certo numero di righe in una sola volta fino a quando non ci sono più dati.

Si tratta di un programma personalizzato che REST è il pezzo di mezzo tra Magento e un drop shipper.

Ogni corsa può richiedere fino a 25 minuti e ci possono essere fino a 400 corse.

Quando ho avuto il processo in un programma PHP mi sono imbattuto in problemi di timeout e di memoria.

Così ora ho uno script bash che chiama il programma PHP tante volte quanto necessario fino a quando non ci sono più dati. Il metodo funziona.

Sono preoccupato che io non sto seguendo standard di Magento utilizzando un programma di shell bash.

Il sistema cron Magento sembra chiamate il supporto PHP e non una chiamata bash, quindi devo usare il cron OS.

C'è un modo migliore per l'esecuzione di un programma più e più volte?

In secondo luogo, c'è un modo per aprire una finestra bash all'interno della amministrazione?

È stato utile?

Soluzione

Quando si tratta di script eseguiti per un tempo molto lungo, in PHP non è proprio quello di PHP è progettato per. Non ho incontrato un pezzo di software che è in grado di eseguire ore su una fine senza incorrere in problemi di memoria.

Quando ho avuto il processo in un programma PHP mi sono imbattuto in problemi di timeout e di memoria. Queste sono le questioni che tutti gli sviluppatori corrono quando stanno costruendo i loro primi script di lunga durata. Nessuna vergogna in questo.

Gli strumenti che vengono eseguiti molto lunga di solito fanno in modo che non depongono le uova un sacco di oggetti (riutilizzo loro) e non creano nuove variabili in ciascun ciclo. Questi programmi sono in genere sviluppati con i requisiti di memoria come uno dei requisiti più importanti. Questo non è facile, in via di sviluppo con un requisiti di memoria a basso è molto più difficile di fare tutto in memoria e solo scorrendo tutto.

La soluzione di utilizzare bash va bene, se funziona e non è necessario per distribuire l'installazione a più server ogni settimana, non vedo nulla di male nel farlo in questo modo.

cron di Magento è un sistema che consente di definire cron jobs senza la necessità di impostare un cron ogni volta su ogni server, è sufficiente definire in configurazione XML di Magento (quando si distribuiscono i moduli questo è molto utile). E 'più adatto ai bambini, ma non va bene per ogni soluzione (come la tua).

Detto questo, se si script viene eseguito per 25 minuti x 400 si sono probabilmente hanno problemi di apportare modifiche, sviluppando ulteriormente ecc L'iterazione di sviluppo, quando l'aggiunta di funzionalità è molto lunga miglioramenti di script effettivi molto difficile. Assicurarsi di aver capito questo, mi è stato bruciato da questo più di una volta.

In secondo luogo, c'è un modo per aprire una finestra bash all'interno della amministrazione? No, sarebbe un potenziale problema di sicurezza.

Se stai cercando di avviare gli script dal Magento backend si potrebbe costruire un job cron Magento che fa esattamente lo stesso del vostro script bash, si può anche eseguire script di shell da lì ( http://php.net/manual/en/function.shell-exec.php ). In questo modo si potrebbe pianificare il lavoro con qualcosa come https://github.com/fbrnc/Aoe_Scheduler .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top