2017-10-13 3 views
-1

je dois exécuter un code PHP dans un autre serveur (appelons-le serveur 2) du serveur 1.boucle ou file_get_contents ignorer la sortie

Dans le serveur 1, j'ai quelque chose comme ça

<?php 
file_get_contents('http://domain_in_server_2.com/php-script.php'); 
?> 

Le problème est que cette demande peut prendre beaucoup de temps et que je n'ai pas besoin d'obtenir la sortie. Je veux juste déclencher le script sans avoir à attendre ou à obtenir la sortie.

Est-il possible d'accomplir ce que je veux?

Merci beaucoup.

+0

Cela dépend en grande partie 'configuration de domain_in_server_2.com' - scripts PHP [peut quitter si le client se déconnecte] (http : //php.net/manual/en/function.ignore-user-abort.php). – ceejayoz

+0

Je pense que ma question est assez claire, je n'utilise pas de navigateur. Mon but est de déclencher le script et de ne pas se préoccuper du fonctionnement/de la sortie. Ou comment "déconnecter" comme dans votre commentaire – aye

+0

'file_get_contents ('http ...')' sera, pour les besoins de 'domain_in_server_2.com', un accès via un navigateur. Votre script 'file_get_contents' peut ** avoir ** à attendre la sortie. – ceejayoz

Répondre

1

Vous pouvez utiliser une socket. Voir ceci example.

Edit:

Voici le code à partir du lien ci-dessus:

// Example: 
// post_async("http://www.server.com/somewhere",array("foo" => 123, "bar" => "ABC")); 

function post_async($url, $params) 
{ 
    // Build POST string 
    foreach ($params as $key => &$val) { 
     if (is_array($val)) $val = implode(',', $val); 
     $post_params[] = $key.'='.urlencode($val); 
    } 
    $post_string = implode('&', $post_params); 

    // Connect to server 
    $parts=parse_url($url); 
    $fp = fsockopen($parts['host'],isset($parts['port'])?$parts['port']:80,$errno, $errstr, 30); 

    // Build HTTP query    
    $out = "$type ".$parts['path']." HTTP/1.1\r\n"; 
    $out.= "Host: ".$parts['host']."\r\n"; 
    $out.= "Content-Type: application/x-www-form-urlencoded\r\n"; 
    $out.= "Content-Length: ".strlen($post_string)."\r\n"; 
    $out.= "Connection: Close\r\n\r\n"; 
    $out.= $post_string; 

    // Send data and close the connection 
    fwrite($fp, $out); 
    fclose($fp); 
} 
+0

Merci beaucoup. Je vais essayer de voir si cela fonctionne et le signaler ici – aye

+0

Salut @Joel, votre méthode fonctionne, le script dans le serveur 1 n'attend pas, mais à partir du serveur 2 comment extraire les données de poste. 'file_put_contents ('file.txt', $ _ POST [" foo "])' crée un fichier 'file.txt' vide. Merci beaucoup – aye

+0

Quoi qu'il en soit, je n'ai pas vraiment besoin des données post, juste pour rendre la question plus utile. J'ai accepté la réponse. Merci beaucoup! – aye