[PHP] Aggiungere un mio script a prestashop?

Phelps

Utente Attivo
17 Dic 2018
50
0
6
Spiego..
Ho integrato un plug che crea due url di soncronizzazione con una piattaforma esterna. Un link sincronizza i prodotti e l'altro gli ordini.
Il plug in dice di creare delle attivita di cron nel task del webhost che richiamano l'url ogni 30 minuti.
Aruba mi fa inserire un task solo con un solo url.
Loro dicono questo:
"potrebbe provare a richiamare tramite php le due url con in mezzo uno sleep di qualche secondo in questo caso richiamerebbe una sola pagina php"

mi chiedo è possibile infilare questo script in prestashop e raggiungerlo con un url? in tal caso come dovrei scriverlo?
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Banalmente allora gestisci a coda il tutto...
Ossia, fai un task che lo richiami ogni minuto, e nel db memorizzi la coda di elaborazione...

Struttura logico/funzionale:
DB - cron
id ~ call ~ is_enable ~ created_at
id: Autoincrement
call: String
is_enable: Bool default 1
created_at: Datetime
call_at:Datetime

Ogni minuto chiami lo script che gestisce il cron,
  1. ti tuffi nella tabella "cron"
  2. recuperi le attività che sono nello stato is_enable=1
  3. esegui la funzione/metodo memorizzato in "call"
  4. alla fine aggiorni il dato della riga is_enable=0 e call_at=Datetime
Tutto qui hai fatto lo scheduler con granulosità di 1 minuto!

Per ampliare lo script basterebbe gestire quando è possibile attivare quel task..:!
 
Ultima modifica:

Phelps

Utente Attivo
17 Dic 2018
50
0
6
ma è dove tu hai scritto string che dovrebbero essere incollate le due url?

Ma a me sembra piuttosto di capire questo:
tipo di creare un file cosi: file.php e piazzarlo nella directory del sito in modo cha sia raggiungibile, miosito.it/file.php
questo file all interno dovrebbe avere una funzione che che ritorna le due url letterali.
Cosa intende il tipo di aruba con lo sleep in mezzo?? capisco che è il ritardo...

.........ad ogni modo dove dovrei mettere il file in prestashop?
 
Ultima modifica:

Phelps

Utente Attivo
17 Dic 2018
50
0
6
mi dispiace ma non ho capito.. la tabella cron è in prestashop?

Codice:
DB - cron
id ~ call ~ is_enable ~ created_at
id: Autoincrement
call: String
is_enable: Bool default 1
created_at: Datetime
call_at:Datetime

questo qui sù è lo script?

sapresti spiegarmi la questione di usare la funzione sleep suggerita dal tizio?
 
Ultima modifica:

Phelps

Utente Attivo
17 Dic 2018
50
0
6
ho capito ma io sono uno sviluppatore frontend js:( nonsql...
Con php e mysql mi barcameno sulle normali operazioni di crud..
Code e task non sò cosa siano.

Tu puoi provvedermi una soluzione piu dettagliata?
altrimenti dico che non lò sò fare e buonanotte.
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Buongiorno @Phelps , ti spiego cosa fare e veramente sono solo 2 semplici operazioni:

1: Crea una tabella sul DB (potresti utilizzare anche un file csv,yaml etc...) con:
  • ID -> integer autoincrement
  • call -> varchar(255) //questa è la funzione che dovrai richiamare
  • is_enable -> bool default 1
  • created_at -> datetime
  • available_at -> datetime
In in "call" devi memorizzare il metodo di una classe e/o una funzione che vuoi eseguire, in available_at metti la data e l'orario di quando è possibile effettuare il lavoro (job) messo in coda (queue).

Ipotizziamo di avere una classe "Worker.php" e di voler avviare il Task:
cron style: */1 * * * * php /directory/applicazione/Werker.php

Cosa significa? Abbiamo avviato un Task che parte ogni minuto.

Immaginiamo di avere 2 metodi all'interno di Worker.php
PHP:
public $data=[];
public $limit=10;
public $conn;

public $current_index=0;

/**
*Costruttore
*/
public function __constructor(){
   $this->conn=new Connection(); //imposta la tua connessione con la lib che ti piace
   $this->getData();
}
/**
* Ottiene le chiamate da effettuare
*/
public function getData(){
    $this->data=$this->conn->query('SELECT BLA BLA BLA FROM TABLE WHERE BLA = BLABLA LIMIT '.$this->limit);
    return $this;
}
/**
* Aggiorna lo stato di un Job
*/
public function updateJob(){
     $this->conn->query('AGGIORNA I DATI WORKER PER DISATTIVARLO WHERE id = '.$this->data[$this->current_index]['id']);
 
}
/**
* Ping su di una pagina (esempio)
*/
public function pingPage(){
    //file_get_contents solo per semplicità
    file_get_contents('https://pagina');
}
/**
* Invia parametri (esempio)
*/
public function sendParams(){
}
Ora immagina che getData abbia estratto una riga del genere:
id=1
call=pingPage
is_enable=1
created_at=2019-10-15 09:00:00
available_at=2019-10-17 09:15:00

Quindi sappiamo che dobbiamo chiamare il metodo pingPage il 17 Ottobre 2019 alle ore 9:15 di mattina.
Alla fine della classe dobbiamo richiamare questi metodi in questo modo:
PHP:
//Inizializzo la classe che automaticamente recupererà i dati dal BD
$worker=new Worker();
//Inizio a ciclare i dati estratti
//ipotizzo estrazione ad array
foreach($worker->data as $chiave=>$valore){
     //controllo se il metodo esiste all'interno della classe
    if(method_exists($worker,$valore['call'])){
          //var appoggio
          $worker->current_index=$k;
           //chiamo il metodo della classe memorizzato in call
          call_user_func([$worker,$valore['call']]);
           //aggiorno il worker per renderlo disattivo
           $worker->updateJob();
   }
}
Sembra complicato, invece è veramente una cavolata...

Naturalmente non ho gestito il available_at in quanto dovresti farlo da query, per recuperare le risorse in :
is_enable = 1 AND available_at = TUA CONDIZIONE
 
Ultima modifica:

Phelps

Utente Attivo
17 Dic 2018
50
0
6
grazie..con l 'esempio pratico è tutto molto piu chiaro.
stasera che torno a casa, lo guardo per bene..
Grazie.;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [PHP] Aggiungere ruolo per accedere alle pagine PHP 2
Shyson [PHP] Aggiungere link al codice PHP 0
R [PHP] Aggiungere 90 minuti a stringa orario PHP 1
brasoft2019 [PHP] aggiungere timestamp in tabella correlata PHP 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
C [PHP] Aggiungere pulsante paypal PHP 2
trattorino [PHP] sql aggiungere dato in una tabella senza cancellare contenuto PHP 6
trattorino [PHP] aggiungere html in un codice PHP 0
felino Capability: aggiungere cap all'editor per admin.php?page WordPress 0
I aggiungere input a form php PHP 30
V Interazione tra PHP e MS Access, aggiungere WHERE condition PHP 2
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4

Discussioni simili