Я пытаюсь вставить несколько URL-адресов (url_array) в базу данных.Как сделать непрерывную вставку mysql, используя foreach?
Во-первых, мне нужно получить некоторую информацию из URL-адресов (название URL, url-изображения, ... decsription). Я делаю это с помощью SimpleHtmlDom.
Поэтому я помещаю это в петлю foreach. Я надеюсь, что он вставляет после каждой итерации до конца массива.
Если есть неправильный URL-адрес, он должен перейти к следующему URL-адресу массива.
Я также хочу, чтобы в конце (последней итерации) некоторое сообщение об успешном json было проанализировано обратно через jquery.
Для кода, который у меня ниже, он только вставляет иногда только 2 или 3 из которых в массиве еще больше URL-адресов.
Вот мой код:
$txturls = $_POST['bulkurls'];
$urlsArray = array_map('trim', explode(',', $txturls));
//var_dump($urlsArray);
$i = 0;
$len = count($urlsArray);
foreach($urlsArray as $url){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
$result = curl_exec($curl);
if ($result !== false)
{
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 404)
{
$checkExist = "URL Not Exists";
}
else
{
$checkExist = "URL Exists";
}
}
else
{
$checkExist = "URL not Exists";
}
if($checkExist === "URL Exists"){
$html = SimpleHtmlDom::file_get_html($url);
foreach($html->find('title') as $element)
{
$urltitle = $element->plaintext;
}
$tags = get_meta_tags($url);
$description = $tags['description'];
if(strlen($description) < 1){$description = $urltitle .' '.'check title';};
$images = array();
foreach($html->find('meta[property=og:image]') as $element) {
if(!preg_match('/blank.(.*)/i', $element->content) && filter_var($element->content, FILTER_VALIDATE_URL))
{
$images[] = url_to_absolute($linkurl, $element->content);
}
}
foreach ($images as $ext){
//$imagesize = getimagesize(''.$ext.'');
if (pathinfo($ext, PATHINFO_EXTENSION)) {
$image = "<img src=\"$ext\" alt=\"$urltitle\">";
break;
}
}
$linkurl = $url;
$checkIfUrlExist = $this->_modellinks->checkUrlExist($linkurl);
if($checkIfUrlExist == false){
$this->_modellinks->addBulkLinks($data['log_username'], $ipaddress, $linkurl, $urltitle, $subafrolinks, $keywords, $description, $image);
}
} else {
continue;
}
if ($i == $len - 1) {
// last
$output = json_encode(array('type'=>'message', 'text' => 'Thanks for your submission! Your URL has been submitted successfully And its under review . <strong>You will be notified when your post is published online. This usually takes less than 1 hour.<br> Here is your preview link'));
die($output);
}
$i++;
}
Я понимаю, что вы имеете в виду. И да, может быть, я должен сделать предварительную проверку URL-адресов, чтобы получить то, что существует. –