![]() |
скрипт рекламы
Помогите сделать php скрипт:
Идея такая есть папка reclama в ней лежат тхт файлы с кодами баннеров. Надо чтобы при каждом обновлении страницы скрипт выбирал слудущий или произвольный файл из папки и показывал баннер. |
Извините за офф-топ.
А какую нагрузку по твоему мнению, должен выдерживать такой скрипт? ЗЫ. Советую обратить внимание на функции readdir, fopen и fread. Это если решать задачу так как указанно в сообщении. |
Цитата:
|
Цитата:
прочитать список файлов - раз выбрать один, прочитать его содержимое - два реально - при мало-мальски серьезной нагрузке винт просто не будет останавливаться... ИМХО, много проще через БД все это оформить - тем более, что дел-то на 15 минут... |
Я просто человек в этом деле новый,может тогда подскажите,что-то более лучшее?
|
RaZEr, ну как тебе сказать, банерокрутилка настоящая, для огромных нагрузок пишеться либо модулем как модуль апача либо под нее выделяеться отдельный сервер. Ичане при 50% ресурсов, как мин, будет уходить на крутилку, особенно, если нужно показывать несколько баннерных площадей.
BorLase, не сказал бы, что решение с бд менее тяжелое. Как минимум +1 коннект к бд каждый раз. Не зря говорят, что самый быстрый вариант брать инфу с диска. Только брать ее нужно в кэшированном html (если уж на то пошло). ИМХО |
А зачем с текстовыми файлами заморачиваться? В таком случае сделать массив в томже скрипте. Каждый элемент массива - код банера.
Потом генерируеш нужный номер и вставляеш код примерно так: echo $baner[ $nomer ]; :) |
EvroStandart, а для обновления ротации баннеров перезаливать скрипт?
|
Цитата:
Ну типа да. Всё равно чтото перезаливать придётся. Можно конечно список банеров в отдельный файл вынести. |
Цитата:
просто предложенный вариант предполагает пусть короткие, но постоянные обращения к диску... а это никогда никому впрок не шло особенно винту :) |
Человеку надо всего лишь баннерокуртилку сделать а вы ему про нагрузку на сервер... ппц какойто, 8 сообщений оффтопа, включая моё!
|
чаще всего сервера кладут в даун именно подобные "всего лишь"
потому как делаются по принципу "о, у меня работает - выкладываем!" а потом загибаются на 20 одновременных коннектах |
Цитата:
Цитата:
Цитата:
|
Цитата:
нет, можно, конечно... :) но тогда, с тем же успехом, можно сказать и так - "не надо читать баннеры как отдельные файлы - зачитал все в память (или в страницу зашил намертво) - и дальше в ротацию" RaZEr, я просто 17 лет профессионально программирую, причем именно для веб (на джаве, правда) - поэтому немножко знаю, о чем пишу :beer: |
Цитата:
|
Народ, все такие умные, я просто прусь от вас. Какое то кеширование, нагрузка.
Походу всё несколько сложнее чем я себе представлял. У меня сделано всё на мой взгляд проще. В базу записаны даные о банерах (альт, линк и пр.) скрипт вбора банера просто считывает из базы данные о банерах в нумерованный массив, а потом с помощью функции случайного числа просто выбирает банер ... Так же просто это можно и просто считав файлы в дирректории. Неужели такой подход даёт столь уж серьёзную нагрузку на сервант? |
Цитата:
просто это настолько же "эффективное" решение, как и чтение (в данном случае) файлов с диска. зачем изобретать велосипед? из врожденного мазохизма? пишем кеширование, потом будем оптимизировать чтение из файла, потом пятое, десятое... зачем это писать самому (а это придется делать, из соображений эффективности, если хиты пойдут не десяток в час, а сотни в секунду), если в любой БД эти механизмы уже реализованы (и, заметим, много эффективней, чем в РНР)? именно об этом речь. |
Код:
Program Name : TextAdsне текст файлы конечно ,зато нагрузку выдержит ;) |
Цитата:
Цитата:
Цитата:
|
неужели 3-5 баннеров могут создать такую нагрузку на сервер?
|
Pinky, все зависит от количества пользователей онлайн, а не от количества баннеров.
В общем-то уже вроде-бы все обсудили. Если тебе не хочеться использоваться систему, которую предложил agRav, можешь воспользоваться способами, которые проскакивали в теме. |
Цитата:
var codes; codes.push('код баннера #1'); codes.push('код баннера #2'); codes.push('код баннера #3'); document.write(codes[Math.round(codes.length*Math.random())]); |
| Часовой пояс GMT +4, время: 13:18. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.