Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    42

    Richiamere mediante file php ulteriori due link in cascata.

    Ciao ragazzi premetto che non sono esperto di php,
    secondo voi se richiamo mediante link questo file...http://miosit.it/file.php che contiene questo:

    Codice PHP:
    <?php 
    header
    ("Location: https://it.reactjs.org/");
    sleep(10);
    header("Location: https://www.php.net");
    secondo voi i link vengono visitati tutti è due?

    Dovrei impostare sul server host dei task da eseguire ogni 30 minuti. In partica i tasks mi devono visitare due link API per le sincronizzazioni..
    Il server host suggerisce questo
    codice:
    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
    Allora io ho pensato a quell 'esempio di sopra.. Illuminatemi grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,670
    Direi di no, il primo esegue un redirect e vai su un'altra pagina, quindi il secondo niente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    42
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Direi di no, il primo esegue un redirect e vai su un'altra pagina, quindi il secondo niente.
    Eseguendol in xampp il primo non lo visita e dopo 10 secondi và a visitare il secondo.
    Ma secondo te cosa intende quello che mi ha detto il tipo?
    Esiste un modo che mi permette mediante il richiamo di quel file di visitare prima il primo url e poi anche il secondo?

    Cioè io nel webhost imposto un task ogni 30 minuti che va a richiamare l url miosito.it/file.php che contiene le due url da chiamare
    Ultima modifica di phelps; 18-10-2019 a 08:20

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,670
    Che cosa ci devi fare con i due link?
    Devi recuperare dalla pagina chiamante ciò che generano o solo chiamarli in modo da attivarli e poi alla pagina chiamante non interessa cosa fanno?

  5. #5
    In ogni caso, la header location non fa quello che vuoi: se file.php verrà richiamato ogni tot tempo come cron job pianificato, il browser NON viene coinvolto nell'esecuzione di un cron job, ed in effetti è come se eseguissi il tuo file.php da linea di comando (CLI) quindi nessuno header potrà mai avere il benché minimo effetto, visto che gli header vengono in generale eseguiti dal browser (senza contare che molti header, come Location, non possono essere ripetuti, quindi il secondo di quei comandi SOVRASCRIVE lo header location del primo).

    Il modo di fare questa cosa è invece:

    $result=file_get_contents("url della pagina da richiamare");

    Se quel che vuoi è semplicemente simulare che l'utente carichi nel browser una pagina.

    Se invece devi fare una chiamata ad una api, allora puoi guardare tutte le funzioni della libreria CURL di php, che ti permettono di fare chiamate con parametri, sia GET che POST, e di configurare tutti i dettagli della chiamata stessa.

    Ricorda che quando uno script php viene chiamato sulla CLI molte cose sono diverse, per esempio non esiste $_SERVER["REQUEST_URI"] e molte altre variabili che vengono normalmente impostate dal server web, apache o iis che sia, come per esempio $_GET e $_POST.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    42
    Grazie a entrambi..
    Si è per un cron job... Ho un link Api per sincronizzare i prodotti e un altro link api per sincronizzare gli ordini.
    Il task Aruba accetta un solo link x il task..
    Dovrei avere un unico script php che me li richiama in cascata..
    Come mi muovo?

  7. #7
    Di nuovo, dipende che cosa hai bisogno di fare: se hai semplicemente bisogno di fingere di "visitare" due url, per ciascuna basta che usi file_get_contents() passandogli la url; fai due chiamate a file_get_contents una dopo l'altra e questo richiamerà prima una e poi l'altra.

    Se invece hai bisogno di fare delle vere e proprie chiamate API in cui devi per esempio inviare dei dati in post, allora devi usare curl, per esempio così:

    $ch = curl_init("urldellaapi");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $returned_data = curl_exec($ch);
    curl_close($ch);

    (tramite altre chiamate a curl_setopt() puoi personalizzare ancora di più la chiamata alla api).
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    42
    Si devo visitare solo le url che sono sicuramente composte da parametri che verranno recepite dal file del. Plugin che si occuperà di effettuare le operazioni. Anche perché è un plugin PrestaShop che alla sua configurazione restituisce quelle due url prodotti e ordini da passare al task Aruba. Ma siccome Aruba di url ne prende una allora per ovviare si infila tutto in un file e le si visita ogni 30 minuti tutte e due..
    Cioè basta un semplice script con due file_get_contents uno dopo l altro. L url la dovrei passare dentro le parentesi tra apici? Vale la pena metterci uno sleep tra i due?
    E inoltre siccome si tratta di PrestaShop dove lo dovrei mettere il file, nella directory principale del sito fuori da PrestaShop?
    Grazie tante ancora

  9. #9
    La url va passata tra apici tra le parentesi, si. La sleep non importa tanto, soprattutto perché si tratta di un cron job; sempre per questa ragione, io lo script lo metterei addirittura fuori dalla web root, così che nessuno possa richiamarlo via web.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    42
    Anche perché questo è quello che dice il plugin:
    Prima di tutto, assicurati che la libreria di curl sia installata sul tuo server. Per eseguire le attività di cron, inserisci la seguente riga nel tuo task manager cron del tuo server.
    In caso di dubbi, contatta il tuo supporto di hosting web e chiedi loro di aggiungere le seguenti attività pianificate per l'esecuzione, ad esempio: ogni 30 minuti.

    e poi qui giu le due url da salvare nel task.
    Dal poco cervello che ho capisco che cmq vogliono solo la url e che poi la funzione cron doverebbe essere nei due file richiamati dalle due url.
    Capisci anche tu questo?
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.