Создание нескольких файлов Sitemap в PHP

У меня есть следующая проблема: я создал URL-адреса для файла Sitemap в массиве. Таким образом, массив имеет 60000 записей. И google хочет, чтобы я создал 2 файла Sitemap, потому что ограничение составляет 50000 записей в каждой карте сайта.

Как я могу сделать это с помощью php? Я попробовал, но у меня проблемы с циклом, чтобы остановить и ввести другие данные в другой файл. Вот мой код sofar.

// $data is array with the urls $count_array = count($data); $maxlinksinsitemap = 50000; $numbersofsitemap = ceil($count_array / $maxlinksinsitemap); for($i = 1; $i <= $numbersofsitemap; $i++) { $cfile = "sitemap_" .$i . ".xml"; $createfile = fopen($cfile, 'w'); $creat = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; $creat .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n"; $creat .= "xmlns:image=\"http://www.sitemaps.org/schemas/sitemap-image/1.1\"\n"; $creat .= "xmlns:video=\"http://www.sitemaps.org/schemas/sitemap-video/1.1\">\n"; $creat .= "<url>\n"; $creat .= "<loc>http://www.urltosite.com</loc>\n"; $creat .= "<priority>1.00</priority>\n"; $creat .= "</url>\n"; $creat .= "</urlset>"; fwrite($createfile, $creat); fclose($createfile); } 

Мне нужно динамическое решение,

Спасибо за помощь.

Solutions Collecting From Web of "Создание нескольких файлов Sitemap в PHP"

array_chunk – ваш друг:

 $data = array_chunk($data, 50000); foreach ($data as $key => $value) { $cfile = 'sitemap_' . $i . '.xml'; $createfile = fopen($cfile, 'w'); fwrite($createfile, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); fwrite($createfile, "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n"); fwrite($createfile, "xmlns:image=\"http://www.sitemaps.org/schemas/sitemap-image/1.1\"\n"); fwrite($createfile, "xmlns:video=\"http://www.sitemaps.org/schemas/sitemap-video/1.1\">\n"); foreach ($value as $url) { $creat = "<url>\n"; $creat .= "<loc>" . $url . "</loc>\n"; $creat .= "<priority>1.00</priority>\n"; $creat .= "</url>\n"; fwrite($createfile, $creat); } fclose($createfile); } 

Работает с переменным количеством файлов Sitemap из коробки.

 $count_array = count($data); $i = 0; foreach ($data as $entry) { if ($i == 0) { // code here to start first file } else if ($i % 50000 == 0) { // code here to end previous file and start next file } // write entry to current file // insert code here.... // increment counter $i++; } // code here to end last file