v2.5.2
Giriş yap

PHP verileri dosya önbelleğinden mysql kaydettirme

erdal42
347 defa görüntülendi ve 1 kişi tarafından değerlendirildi
// Tüm xml dosyalarını tek bir dosyada birleştirin
$merged_xml = new SimpleXMLElement('<root></root>');
foreach ($xml_urls as $xml_url) {
    $xml_file = $xml_folder . md5($xml_url) . '.xml';
    $xml_string = file_get_contents($xml_file);
    $xml = simplexml_load_string($xml_string);
    foreach ($xml->channel->item as $item) {
        $merged_xml->addChild('item', $item->asXML());
    }
}

// Arama sorgusunu alalım
$searchTerm = htmlspecialchars($_GET['q']);
$searchTerm = str_replace(array('nedir?', 'nasıl?', 'nedir', 'nasıl', 'keşfedildi', 'nedir kısaca', 'ne zaman'), '', $searchTerm);

// XML verilerinin dosyaya kaydedileceği dizini belirleyelim
$xml_folder = 'onbellek/';

// XML verilerini çekelim
$xml_urls = array(
    'https://www.haberturk.com/rss',
	'https://www.macworld.com/feed'
);

shuffle($xml_urls);

// Sonuçları tutmak için bir değişken tanımlayalım
$results = array();

foreach ($xml_urls as $xml_url) {
    // XML verisini dosyadan okuyalım veya internetten çekelim
    $xml_file = $xml_folder . md5($xml_url) . '.xml';

    if (file_exists($xml_file) && (time() - filemtime($xml_file) < 7200)) {
        // Eğer dosya mevcutsa ve 1 saat içinde değişmemişse, dosyadan okuyalım
        $xml = simplexml_load_file($xml_file);
    } else {
        // Eğer dosya yoksa veya 1 saat içinde değişmişse, internetten çekelim ve dosyaya kaydedelim
        $xml = simplexml_load_file($xml_url);
        file_put_contents($xml_file, $xml->asXML());
    }

    // Her bir XML öğesi için döngü oluşturalım
foreach ($xml->channel->item as $item) {
    // Başlık ve açıklama metinlerini birleştirelim
    $content = strtolower((string) $item->title) . strtolower((string) $item->description);
    // Arama sorgusunu içerip içermediğini kontrol edelim
if (stripos($item->title, $searchTerm) !== false) {
        // Eğer aranan kelime mevcutsa, sonucu results dizisine ekleyelim
        $result = array(
            'title' => (string) $item->title,
            'description' => (string) $item->description,
            'link' => (string) $item->link,
            'source' => getSourceLogo($xml_url)
        );
            $pubDate = date("d.m.Y", strtotime($item->pubDate));
            // Eğer resim varsa, resmin bağlantısını results dizisine ekleyelim
            if (!empty($item->image->url)) {
                $result['image'] = (string) $item->image->url;
            } elseif (!empty($item->enclosure['url'])) {
                $result['image'] = (string) $item->enclosure['url'];
            }
	

            $results[] = $result;
            $count++;
            if ($count >= 7) {
                break;
            }
        }
    }
}

// Sonuçlar dizisi boşsa, haber kutusunu göstermeyelim
if (empty($results)) {
    echo '<style>.kutumuz {display:none;}</style>';
    echo '<style>.ustbaslik {display:none;}</style>';              
} else {
    // Sonuçları göstermek için bir div etiketi oluşturalım
    echo '<div class="kutumuz">';

    // Her bir sonucu döngü ile gösterelim
    foreach ($results as $result) {
        // Her bir sonuç için bir div etiketi oluşturalım

		echo '<div class="kutuici">';
        if (!empty($result['image'])) {
            // Eğer resim mevcutsa, resmi gösterelim
            echo '<img src="' . $result['image'] . '" alt="Resim yüklenemedi"><br>';
        } else {
            // Eğer resim yoksa, alternatif bir resim gösterelim
            echo '<img src="static/resim/resimyokhaber.png"><br>';
        }
        echo '<div class="kutubaslik"><a href="' . $result['link'] . '" target="_blank">' . $result['title'] . '</a></div>';
        echo '<div class="resimkaynagi"><img src="' . $result['source'] . '"></img></div>';
		
        echo '</div>';
    }

	echo '</div>';
}

Selamlar efendim,
Php ile bir çok xml verileri çekmekteyim. Yukarıda verdiğim kod harikalade şahane çalışmakta ve hiç bir problemi bulunmuyor. Ancak bazen arama yaparken verileri yavaş gösteriyor. Verileri dosyalara kaydettirsek bile dahi yine de bir yavaşlık olabiliyor. Veritabanına taşımak için mysql veritabanı oluşturdum.

Ancak nasıl bir tablo oluşturacağım. Ve üste attığım kodu düzenleyip mysql bağlayarak nasıl veritabanı oluşturduğumuz tablonun içine nasıl kaydettirebileceğiz ?

Hatta efendim bu kodu düzenleyip hazır sql atabilirseniz, nerelerde hata yaptığımı hazır bir şekilde detaylı öğrenmek istiyorum.

erdal42
574 gün önce

Merhaba @darkwob,
İlgin için teşekkür ederim. XML veriler şu anda dosyalara kaydediliyor. Her bir çekilen xml verileri .xml uzantıda çekiyor. İçinde zaten veriler oluyor. Onun yerine bu xml verileri direkt veritabanına kaydetmesini istiyorum.