Je possède ce code:des questions curl PHP - en cours d'exécution à plusieurs reprises
<?php
foreach($items as $item) {
$site = $item['link'];
$id = $item['id'];
$newdata = $item['data_a'];
$newdata2 = $item['data_b'];
$ch = curl_init($site.'updateme.php?id='.$id.'&data1='.$newdata.'&data2='.$newdata2);
curl_exec ($ch);
// do some checking here
curl_close ($ch);
}
?>
entrée de l'échantillon:
$site = 'http://www.mysite.com/folder1/folder2/';
$id = 512522;
$newdata = 'Short string here';
$newdata = 'Another short string here with numbers';
Voici le processus principal de updateme.php
if (!$id = intval(Tools::getValue('id')))
$this->_errors[] = Tools::displayError('Invalid ID!');
else
{
$history = new History();
$history->id = $id;
$history->changeState($newdata1, intval($id));
$history->id_employee = intval($employee->id_employee);
$carrier = new Carrier(intval($info->id_carrier), intval($info->id_lang));
$templateVars = array('{delivery}' => ($history->id_data_state == _READY_TO_SEND AND $info->shipping_number) ? str_replace('@', $info->shipping_number, $carrier->url) : '');
if (!$history->addWithemail(true, $templateVars))
$this->_errors[] = Tools::displayError('an error occurred while changing status or was unable to send e-mail to the employee');
}
le site change toujours et chaque $ $ aura au moins 20 données à l'intérieur de sorte que la boucle foreach fonctionnera au moins 20 fois ou plus sur le nombre de données.
Le site cible mettra à jour sa base de données avec les variables passées, il passera probablement au moins 5 fonctions avant qu'il ne soit sauvegardé dans la base de données, donc cela pourrait probablement prendre du temps aussi.
Ma question est: y aura-t-il un problème avec cette approche? Le script rencontre-t-il une erreur de dépassement de délai lors du processus de bouclage? Que diriez-vous si les données $ items sont autour de 50 ou dans les centaines maintenant?
Ou y a-t-il une meilleure façon de faire cela?
MISES À JOUR: * Ajout du code de processus principal updateme.php. Informations supplémentaires: updateme.php enverra également un e-mail en fonction des variables transmises.
- Tous les autres sites sont actuellement hébergés sur le même serveur.
C'est presque certainement un moyen inefficace de le faire. Est-ce que toutes les requêtes curl seront sur des serveurs différents, ou seront-ils tous sur le même serveur? Si oui, pouvez-vous modifier le code en 'updateme.php'? – lonesomeday
À l'heure actuelle, toutes les requêtes curl seront dans le même serveur. – GoDesigner