[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.343
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.343
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
G phpmailer e php 8.1 con estensione mysqli PHP 5
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
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 Visualizzazione a video risultati query php PHP 0

Discussioni simili