edogs software

edogs software
Рейтинг
775
Регистрация
15.12.2005
Должность
Программирование

А базу форума в каком формате отдаете?

Файл: soursec/classes/class_display.php

Ищите: print $this->ipsclass->skin['_wrapper'];

Пишите до неё


ob_start();
include('http://xxx.net/ads.php');
$a=ob_get_clean();
$this->ipsclass->skin['_wrapper']=str_replace('<!--abazaba44-->',$a,$this->ipsclass->skin['_wrapper']);

После этого в шаблоне, там где нужен этот вывод, вставляете <!--abazaba44-->

P.S.: include("http://url - лучше по возможности не используйте. Вы же скачиваете по урлу (функцией исходно файловой) "что попало", а потом выполняете скачанный код. Если это биржа ссылок, то как правило есть приличные альтернативы (wget по крону + file_get_contents например).

Asher:
Можно ли обьявить/описать/создать блок кода или функцию, которая бы определяла, что наступило максимальное время работы скрипта или перехватывала это сообщение, записывала данные в базу(пусть даже и не все) и заканчивала работу? Либо же обьявить перехватчик этой ошибки Maximum execution time exceeded и направить его в функцию, см. выше.
Или же придется тупо проверять время выполнения скрипта(которое не может быть заранее известно) временными функциями и по концу его заканчивать работу.

1) Самое разумное: самим выставить set_time_limit в максимально допустимое значение. Допустим 60 секунд. После этого в скрипте, в критических моментах - проверять текущее время и если что аварийно завершаться. Лучше с заведомо достаточным запасом по времени.

2) "Трюковой" подход (ибо функция всё-таки не для этого). Пример:

ob_start("abazaba");

set_time_limit(1);
for($i=0;$i<=10000;$i++) $i--;
function abazaba($a) {
$a.=5;
for($i=0;$i<=100000;$i++) $b++;
$a.='-'.$i;
return $a;
}

Смысл примера вот в чем. Сначала включается буферизация вывода и функция которая вызывается когда этот вывод начинается. Когда time_limit кончится, то начнется вывод контента (он передается как параметр этой функции) и в этой функции можно сделать что угодно. Пример наглядно покажет, что даже после уже вывода фатальной ошибки о конце скрипта - будет выполнена функция abazaba и сделана приписка к контенту.

3) "Стандартный" способ: register_shutdown_function - просто регистрируете функцию и она вызывается на событии заверешния скрипта. В отличии от пункта 2 - контент уже будет выкинут в аутпут. Пункт 2 как ни странно надежнее по нашему опыту, да и контент позволяет ловить.

P.S.: Способы 2 и 3 могут не сработать если хостер просто прибивает сами процессы, а не отдает это на откуп php.

P.P.S.: Учтите, что файловые операции, операции с БД и удалёнными урлами могут не учитываться в set_time_limit. Например, если Вы ждете ответа от удалённого сервера 50 секунд, то для скрипта это время не будет считаться. Если у Вас граббер - это может быть актуально.

AlienZzzz:
Я не буду это предлогать, но скажите почему, хостер блокирует ?

Как правило что бы не блокировать если что клиента или его скрипты экстренно:) Нужен хостеру подвисший скрипт, создающий постоянную нагрузку? А клиенту нужен жестко прибитый скрипт по только что названной причине? Лимиты на время выполнение достаточно мягкий способ избежать проблем из-за ошибок в скриптах приводящих к их подвисанию и в то же время они легко обходятся в случае необходимости, плюс это способ - дающий понять клиенту сколько у его скрипта есть гарантированного времени на работу.

Пробовали добавлять сегодня сайт, в ru-шной зоне, работает на отдельном сервере, мистических проблем с отзывом и т.д. соответственно не должно быть. Больше 20 попыток - безуспешно:( Пишет что не смог дождаться ответа и все. При чем на сервере вообще запросов яндекса не видно и не слышно. Трейсили сайт с других точек, на мониторинг в хост-траккер поставили, через анонимные прокси лазили - все ок. Пробовали другие сайты которые до этого не заносили, та же ерунда.

P.S.: Попробовали добавить сайт, который уже который в индексе, добавился с первого раза.

P.P.S.: "Если у Вас паранойя, это не значит что за Вами не следят" (с). Перед уходом на покой попробовали еще раз, прошло 15 минут с момента написания этого сообщения, все сайты добавлись без проблем. На серверах ничего не делали. До этого сутки почти пытались - ничего не срабатывало.

GNU

Потерянный, полноценной, правильной и официально признанной версии перевода нет.

Продавать продукт в который входит gnu библиотека можете свободно.

Но Ваш продукт в таком случае тоже будет gnu лицензированным со всеми вытекающими.

Единственный выход - сделать свой продукт работающим без этой библиотеки и поставлять её отдельно как "совместимый плагин". Так например поступают с wysiwyg редакторами.

psylosss:
холивар - как надо комментировать в РНР 😡
Я за // и /* */ . Кто со мной - бить любителей # ? :)

Вообще это не только холивар, но и оффтопик в этой теме, но раз уж на то пошло:)

Любителям /* */ рекомендуем попробовать

<?php

$a='a123*/b';
$a=preg_replace('~123\*/~','456',$a);
echo $a;
?>

запустить, а потом закомментировать середину

<?php

$a='a123*/b';
/*
$a=preg_replace('~123\*/~','456',$a);
*/
echo $a;
?>

и улыбнуться на результат.

Код нередко комментируем с помощью if(0) {} - во всех редакторах хайлайтер настроен выделять такое. Заодно и код остается с подсветкой. Перед сдачей проекта просто удаляем подобные куски.

P.S.: В рамках топика, кто-то из наших знакомых говорил нам, что в php 5.2.2 действительно есть проблема с $_POST массивом, баг - пофиксенный в 5.2.3. Поэтому если у ТС всё еще остались с этим проблемы, рекомендуем порыться на эту тему.

neznaika:
Вопрос! :)
Для полноценного функционирования 4 больших сайтов на "битрикс - бизнес" нужно ли выносить базу на дополнительный сервер?
около 100к просмотров вместе все.
Сейчас 1 xeon 3,2 Ггц и 2 гб. оперативки SCSI 10000 об.
Тупит все дико, ногами не бить :)
ps стандартное битрикс кеширование настроенно везде где возможно.

Битрикс, при всех его достоинствах, не является эталоном по нагрузке и быстродействию. Что бы решить Ваш вопрос - сначала убедитесь что проблемы именно в базе и именно в процессорном времени на базу, в противном случае смысла выносить БД отдельно просто нет. Пусть администраторы сервера посмотрят чего именно не хватает и какие процессы реально грузят сервер. Может у Вас всё в ФС как раз упирается несмотря на скази (битрикс с ней активно работает) или для БД памяти не хватает (тогда может просто до 4Гб расширите и нормализуется). А может у Вас столько "медленных" клиентов, что даже не в битриксе дело, а в огромном количестве статики отдаваемой.

DmitryShustov:
Стало интересно - есть какая нибудь дельная литературка в сети или офлайне по оптимизации (снижению нагрузки) php+mysql проектов?

Проблема с оптимизацией состоит в том, что воспользоваться советами по оптимизации на практике, как правило, способен только тот, кто уже знает как именно выполнять её. То есть если Вы можете выполнить совет по внедрению кэширования (например) сами - это хорошо, а если нет - лучше обратитесь к специалистам. В противном случае, можно даже получить отрицательный эффект. Например при медленной ФС и быстрой БД, или даже просто при частом рекэшировании в файлы - введение кэширования может оказаться очень плохой идеей. Меньшее количество запросов к БД не всегда дает бОльшее быстродействие и т.д..

Tarry:
Кстати, раз знающие люди заглядывают в это топик, есть вопрос.
Бот по расписанию ползает по сайтам. Урлы из базы берет. При этом ежели нет 200 или 301 - пропускает. Но бывает так, что 200 есть, а толку нет. Как бороться? Чтобы бот не вешал mysql? Ибо все это происходит в цикле? Заголовки с ответами серванта беру через get_headers(), в прочем это и не важно. Сервер виртуальный...

Не до конца поняли вопроса, но.. бот ползает Ваш?

1) Что значит "толку нет"? 200 пришло, но сервер контент не отдает или отдает медленно? Для этого есть тайм-ауты. Если Вы не файловыми функциями грабите контент урлов (а делать это файловыми функциями это ужасная идея, хотя мы видели это в очень многих грабберах и некоторые биржы ссылок не то что implode('',file советуют, а даже иногда include(" что нас вообще в ужас приводит).

2) Зачем вообще get_headers делать? Если Вы всё равно граббер потом запускаете? Если php и urls, то мы предпочитаем http://php.net/curl , сойдет http://php.net/stream или если уж если совсем плохо с хостингом, то http://php.net/fsockopen

3) У нас нередко душа лежит к тому, что бы не запускать php для граббинга сайтов (хотя грешим и таким нередко, ибо удобно часто). Кидайте на php в файл нужные списки для граббинга. И запускайте wget обычный по крону, что бы он брал урлы из созданного на php файла и собирал их. А на php потом можно результат собранный обработать, опять же по желанию - по крону.

aur:
garamond, меня тоже костерили а сабж о необходимости рассылки объвления. а суть в чем? Мне, лично, нужно было не спамом заниматься, а реальное объявление об услуге раскидать (сдача квартиры)
где грань? пора определяться с этой темой

Нам тоже надо было просто разослать объявление, даже без адреса сайта. Спрашивали модераторов - был однозначный ответ - не надо. В принципе понять можно, с одной стороны, с другой стороны у нас у самих есть сайт с доской объявлений и 50% нормальных объявлений приходит именно с таких программ рассылок.

В итоге мы просто согласились с разумностью правил и закончили покупкой espanadir и ручной рассылкой.

P.S.: Про pantera не слышали, так что espanadir выбрали просто по совету знакомого, насколько он лучше/хуже - не знаем.

Всего: 12159