Я новичок в php
и SQL
.PHP слишком длинный
У меня есть база данных с 45 000 строк, мне нужно извлечь весь атрибут 'udid', поэтому есть много данных. Я помещаю результат в массив, для каждого udid, я проверяю, существует ли udid.xml, если файл существует, я его открываю и искал некоторые данные, а затем меняю порядок массива. Пока этот процесс я получаю ошибку тайм-аута, когда Я вызываю свой сценарий или ошибку 504 у своего интернет-провайдера.
Вот мой PHP код:
include("myFunctions.php");
header('Content-type: application/json; charset=utf-8');
$handle = fopen('php://input','r');
// ----------
set_time_limit (0);
$req_Push = $db->sql_query("SELECT * FROM utilisateurs");
echo("COUNT = " .$db->sql_numrows($req_Push). "");
$arrayBigTbl = array();
while ($row_Push = $db->sql_fetchrow($req_Push)){ // while udid ref fichier utilisateurs
$idUser = $row_Push['udid'];
$arrayBigTbl []= $idUser;
}
//print_r($arrayBigTbl);
echo("</br>Count array global = " .count($arrayBigTbl). "--");
$arrayBigTbl = array_unique($arrayBigTbl);
echo("</br>Count array global nettoyée = " .count($arrayBigTbl). " -- Fin2");
$arrayXMLDevice = array();
for ($i = 0; $i < count($arrayBigTbl) ; $i++)
{
if (deviceXMLExist($arrayBigTbl[$i]))
{
$UDIDFile = simplexml_load_file("./UDID/".$arrayBigTbl[$i].".xml");
foreach($UDIDFile->UDID as $item)
{
$valueTemp = $item->valueUDID;
$strig = "" .$valueTemp. "";
$arrayXMLDevice[] = $strig;
}
}
}
//print_r($arrayXMLDevice);
echo("COUNT ARRAY DEVICE XML = " .count($arrayXMLDevice). " --- Fin 3");
$arrayXMLDevice = array_unique($arrayXMLDevice);
echo("COUNT ARRAY DEVICE XML = " .count($arrayXMLDevice). " --- Fin 3");
$arrayXMLDevice = array_values($arrayXMLDevice);
$arraymerge = array_merge ( $arrayBigTbl,$arrayXMLDevice);
echo("COUNT ARRAY MERGE = " .count($arraymerge). " --- </br>");
$arraymerge = array_unique($arraymerge);
echo("COUNT ARRAY MERGE NETTOYEE = " .count($arraymerge). " --- Fin 3");
$arrayFinalPush = array();
for ($i = 0; i < count($arraymerge);$i=$i+1)
{
$aValue = $arraymerge[i];
if(ctype_xdigit($deviceToken) && strlen($deviceToken)>60)
{
$arrayFinalPush[] = $aValue;
}
}
echo("COUNT ARRAY FINAL = " .count($arrayFinalPush). " ---");
Как я могу решить эту проблему, так что мой запрос получает закончил?
Эта строка вашего '$ strig =" ". $ ValueTemp. ""; '. Для чего это? В последнее время я видел подобное, и я не понимаю, почему это делается. Вы считаете, что приведение строки в строку сложно: '$ strig = (string) $ valueTemp;' – hanzo2001
Нет, но я новичок в php, благодарю за отзыв. –