- Düzenlendi
Sayın üstadlarım, bu kodum ile ile ilgili çok soru sordum maruz görün bu son sorum olacak.
aşağıdaki kod ile veritabanından url leri alıp rss feed sayfalarından başlık ve linkleri alarak veritabanına kaydediyorum.
Sorunum , veri tabanından url leri alırken, veritabanında ilişkili oldukları site_id ler var. Bu id leride alıp, kaydederken her url lenin ilgili site_id inide kaydetmem gerekiyor.
$urls = DB::table('urls')->pluck('urls')
->toArray();
$client = new Client();
$promises = (function () use ($urls, $client) {
foreach ($urls as $url) {
yield $client->getAsync($url,[ 'timeout' => 300 ],['allow_redirects' => false]);
}
})();
(new EachPromise($promises, [
'concurrency' => 5,
'fulfilled' => function (ResponseInterface $response, int $index) {
$index = $response->getBody()->getContents();
$feed = simplexml_load_string($index);
foreach ($feed->channel->item as $article) {
DB::table('bot')->insertOrIgnore([
'baslik' => $article->title,
'url' => $article->link,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
]))->promise()->wait();