Ключ антикапчи (раздача инвайтов для antigate.com)
Google ping php script - php пинг для google.com
Требования:
php 4/5
file_get_contents on
Код (google_ping.php):
- <?php
- $urls = file ("urls.txt");
- for ($x=0;$x<count($urls);$x++)
- {
- $url = trim ($urls[$x]);
- if (eregi("Thanks for the ping.", file_get_contents("http://blogsearch.google.com/ping?url=".$url)))
- {
- echo $url." - added\r\n";
- } else {
- echo $url." - not added\r\n";
- }
- }
- ?>
НастройкаСоздать файл в папке скрипта с названием urls.txt где прописать список адресов для пинга. После чего можно запускать Google ping php script.
Google ping - волшебный пендель.

Именно так иногда стоит дать волшебный пендель для ускорения процесса индексации ибо иначе просто никак не хочет Гоша делать свое дело. Google ping это сервис если его можно так назвать для уведомления поисковика google о том что у нас в блоге есть новый пост. Как только пост готов его нужно пингануть в гугль, после чего придет добрый индекс бот и добавит пост в выдачу поисковой системы. Ping сервисы есть у каждый поисковой системы и не только. Вот небольшой список урлов для пинга:
http://1470.net/api/ping
http://api.feedster.com/ping
http://api.feedster.com/ping.php
http://api.moreover.com/ping
http://api.moreover.com/RPC2
http://api.mw.net.tw/RPC2/
http://api.my.yahoo.co.jp/RPC2
http://api.my.yahoo.com/ping
http://api.my.yahoo.com/RPC2
http://api.my.yahoo.com/rss/ping
http://bblog.com/ping.php
http://bitacoras.net/ping
http://blog.goo.ne.jp/XMLRPC
http://blogbot.dk/io/xml-rpc.php
http://blogdb.jp/xmlrpc
http://blogmatcher.com/u.php
http://blogoole.com/ping
http://blogroots.com/tb_populi.blog?id=1
http://blogsearch.google.ae/ping/RPC2
http://blogsearch.google.at/ping/RPC2
http://blogsearch.google.be/ping/RPC2
http://blogsearch.google.bg/ping/RPC2
http://blogsearch.google.ch/ping/RPC2
http://blogsearch.google.cl/ping/RPC2
http://blogsearch.google.co.hu/ping/RPC2
http://blogsearch.google.co.id/ping/RPC2
http://blogsearch.google.co.il/ping/RPC2
http://blogsearch.google.co.it/ping/RPC2
http://blogsearch.google.co.jp/ping/RPC2
http://blogsearch.google.co.ma/ping/RPC2
http://blogsearch.google.co.th/ping/RPC2
http://blogsearch.google.co.uk/ping/RPC2
http://blogsearch.google.com.ar/ping/RPC2
http://blogsearch.google.com.au/ping/RPC2
http://blogsearch.google.com.co/ping/RPC2
http://blogsearch.google.com.do/ping/RPC2
http://blogsearch.google.com.mx/ping/RPC2
http://blogsearch.google.com.pe/ping/RPC2
http://blogsearch.google.com.sa/ping/RPC2
http://blogsearch.google.com.sg/ping/RPC2
http://blogsearch.google.com.tr/ping/RPC2
http://blogsearch.google.com.vn/ping/RPC2
http://blogsearch.google.com/ping/RPC2
http://blogsearch.google.es/ping/RPC2
http://blogsearch.google.fi/ping/RPC2
http://blogsearch.google.hr/ping/RPC2
http://blogsearch.google.in/ping/RPC2
http://blogsearch.google.it/ping/RPC2
http://blogsearch.google.nl/ping/RPC2
http://blogsearch.google.pl/ping/RPC2
http://blogsearch.google.ro/ping/RPC2
http://blogsearch.google.se/ping/RPC2
http://blogsearch.google.sk/ping/RPC2
http://blogsearch.google.us/ping/RPC2
http://blogsnow.com/ping
http://bulkfeeds.net/rpc
http://coreblog.org/ping/
http://effbot.org/rpc/ping.cgi
http://fgiasson.com/pings/ping.php
http://godesigngroup.com/blog/feed
http://imblogs.net/ping
http://lasermemory.com/lsrpc
http://mod-pubsub.org/kn_apps/blogchatt
http://ping.amagle.com/
http://ping.bitacoras.com
http://ping.blo.gs/
http://ping.blogg.de
http://ping.bloggers.jp/rpc/
http://ping.blogmura.jp/rpc/
http://ping.blogs.yandex.ru/RPC2
http://ping.cocolog-nifty.com/xmlrpc
http://ping.exblog.jp/xmlrpc
http://ping.fakapster.com/rpc
http://ping.feedburner.com
http://ping.myblog.jp
http://ping.rootblog.com/rpc.php
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://ping.weblogs.se/
http://ping.wordblog.de
http://pinger.blogflux.com/rpc
http://pinger.onejavastreet.com
http://pingoat.com/goat/RPC2
http://pingqueue.com/rpc
http://popdex.com/addsite.php
http://rcs.datashed.net/RPC2
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger/
http://rpc.britblog.com
http://rpc.icerocket.com:10080
http://rpc.newsgator.com
http://rpc.pingomatic.com
http://rpc.tailrank.com/feedburner/RPC2
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://rpc.wpkeys.com
http://services.newsgator.com/ngws/xmlrpcping.aspx
http://snipsnap.org/RPC2
http://thingamablog.sourceforge.net/ping.php
http://topicexchange.com/RPC2
http://trackback.bakeinu.jp/bakeping.php
http://weblogues.com/RPC
http://www.a2b.cc/setloc/bp.a2b
http://www.bitacoles.net/ping.php
http://www.blogdigger.com/RPC2
http://www.blogoole.com/ping/
http://www.blogoon.net/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://www.blogsdominicanos.com/ping/
http://www.blogshares.com/rpc.php
http://www.blogsnow.com/ping
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.catapings.com/ping.php
http://www.feedsky.com/api/RPC2
http://www.focuslook.com/ping.php
http://www.holycowdude.com/rpc/ping/
http://www.imblogs.net/ping
http://www.lasermemory.com/lsrpc/
http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php
http://www.mod-pubsub.org/ping.php
http://www.newsisfree.com/RPCCloud
http://www.newsisfree.com/xmlrpctest.php
http://www.popdex.com/addsite.php
http://www.rssfwd.com/xmlrpc/api
http://www.snipsnap.org/RPC2
http://www.wasalive.com/ping/
http://www.weblogues.com/RPC
http://www.xianguo.com/xmlrpc/ping.php
http://xmlrpc.blogg.de
http://xping.pubsub.com/ping/
https://phobos.apple.com/WebObjects/MZFinance.woa/wa/pingPodcast
Как пользоваться етим всем? Нужно просто добавить эти списки в настройки своего движка WordPress (Options->Writing) и он сам будет уведомлять вышеприведенные каталоги и поисковики о новых сообщениях в вашем блоге.
Тепрь поговорим о ручном добавлении в google. Для того чтобы добавить урл (пингануть) в google используется google ping по адресу http://blogsearch.google.com/ping?url=http://site.ru как не сложно догадаться что вместо site.ru нужно подставлять свой урл чтобы сделать Ping. если в ответ вы получите надпись "Thanks for the ping." значит Google принял ваш ping и скоро к вам придут его боты.
PHP скрипт для пинга ваших страниц можно взять тут Google ping php script - php пинг для google.com
Exipilis cms
Energine CMS

1. Полная поддержка языковых пакетов (многоязычности)
2. Уникальная система регистрации и авторизации позволяет ограничивать доступ и права пользователям или группе пользователей.
3. WYSIWYG редактор позволяет редактировать содержимое страниц без знаний языка html.
4. Гибкая настройка структуры сайта дает возможность редактору реализовать любую поставленную задачу.
5. Самое вкусное - модуль интернет магазина позволяет сделать на базе cms полноценный интернет магазин.
Кроме того следует отметить что данная cms система управления сайтом Energine CMS имеет полностью интуитивно понятный интерфейс управления и настроек параметров вашего сайта или интернет магазина.
EKVI X Cms
Список русских соц. закладок

www.mister-wong.ru
www.moemesto.ru
www.linkstore.ru
www.memori.ru
www.bobrdobr.ru
www.myscoop.ru
www.100zakladok.ru
www.links.i.ua
www.communizm.ru
www.zanachka.com
www.ru-marks.net
www.webmarks.ru
www.uca.kiev.ua
www.ruspace.ru
www.linkomatic.ru
www.kli.kz
www.text20.ru
www.savelink.org.ua
www.web-zakladka.ru
www.zakladok.net
www.toodoo.ru
www.web-markz.com
www.delicious.com
www.lopas.ru
www.bibsonomy.org
www.furl.net
www.frum.ru
www.blogparad.ru
Палю тему! Как из 100$ сделать 10000$ за 5 минут!




Видите? Проще некуда!
Соц закладки с dofollow

* Furl PR7
* Bibsonomy PR7
* Spurl PR6
* Unalog PR6
* Searchles PR6
* Plime PR5
* BlogHop PR5
* MyLinkVault PR5
* A1 Webmarks PR5
* ClipClip PR5
* Diigo PR5
* Listible PR5
* MyVmarks PR5
* Complore PR4
* OnMyList PR4
* Kapely PR3
* info4it PR3
* MyPIP PR3
* SyncOne PR3
* Yattle PR2
Прогон по этому списку даст ощутимый рост значений пузомерок PR и ТИЦ вашего сайта.
AdVantShop net - еще одна достояная cms

AdVantShop .NET Lite представляет собой готовую систему управления интернет магазином. Система включает в себя немколько гоовых шаблонов которые идесльно подойдут под ваш интернет магазин. Для управления интернет магазином используется удобная админ панель, при этом особых навыков для работы с системой не требуется.
Система управления контентом AdVantShop .NET Lite имеет также ряд дополнительных возмодностей:
1. Технология Ajax дает возможность пользователю и покупатлю работать без перезагрузки основной страницы
2. Подержка неограниченого числа типов валют делает данную систему управления более гибкой.
3. Поддержка функции отключения сайта или группы сайтов для проведения профилактических работ: добаления товаров ил смена дизайна интернет магазина
4. Удобная система администрирвания интуитивнопонятна и удобна.
Система управления интернет магазином AdVantShop net это по сути коммерческий продукт который хорошо поддерживается и обновляется. Кроме того служба поддержки окажет помощь возникновении проблем в настройке или установке системы.
ABO.CMS система управления контентом

Купить дарсонваль и забыть о проблемах со здоровьем навсегда

Купить дарсонваль можно по ссылке: http://bit.ly/9GPfT3
2Gears CMS - хорошая система управления сайтом

Chyrp - блоговая cms (micro wordpress)
Поиск по файлообменникам
http://sharingengines.com/ - отличный сервис для поиска файлов ищет не только по файлообменниках но и по торрентах и emule.
http://filesearch.gr/ - простой и незатейливый поисковик по таких файлообменниках как Megaupload, Depositfiles, Rapidshare и Filefactory.
http://www.avun.com/ - поиск более чем по 18 файлообменниках. Отличный сервис качественная и быстрая работа.
http://www.daleya.com/ - поисковик от наших забугорных собратьев. Испанский сервси дает неалохие результаты, ищет более чем по 20 файлообменниках.
http://filesbot.com/ - работает с rapidshare, megaupload, uploading и другими. Простой и быстрый поисковик по файлообменных хранилищах данных.
http://www.filecrop.com/ - немецкий поисковик. Хорош тем что дает возможность задавать размеры файлов и дату истечения строка хранения.
http://www.shareminer.com/ - самый крупный поисковик, ищет через google. Разработчики утверждают что в месяц поисковик обрабатывает более 5 миллионов запросов.
http://www.gappon.com/ - сервис который ищет неведомо что. При тестах показал очень плохие результаты. Ну в список наш попадает последним пусть будет, может починят ...
Поиск по файлообменниках
Основные особенности:
- позволяет делать поиск по сразу нескольким популярным файлообменниках.
- делает абсолютно точный поиск введенной фразы.
- показывает прямые ссылки на скачку.
Парсер статистики ключевых слов Яндекс (yandex wordstat)
Требования:
минимальные
Screenshots:
Скачать парсер Яндекс Wordstat:
http://slil.ru/28963297
http://www.sendspace.com/file/rrj89j
http://www.rapidshare.ru/1448726
http://rapidshare.com/files/376169885/yandex_wordstat_parser.rar.html
http://hotfile.com/dl/38042626/3bb0d9d/yandex_wordstat_parser.rar.html
А хотите добавить свой функционал? Может поддержку proxy или распознавание капчи? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
PHP скрипт обратной связи
Настройка:
Требования:
php: 4/5
ScreenShots:

Скачать скрипт обратной связи
http://slil.ru/28945117
http://www.sendspace.com/file/5g52ff
http://www.rapidshare.ru/1444403
http://rapidshare.com/files/374982456/contact.rar.html
http://hotfile.com/dl/37574166/48228dc/contact.rar.html
А хотите добавить свой функционал? Может капчу прикрутить посложнее или сделать на базе скрипта форму приема заказов на вашем сайте? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
PHP скрипт файлообменника
Требования:
php: 4/5
ScreenShots:
Скачать скрипт файлообменника:
http://slil.ru/28943041
http://www.sendspace.com/file/kma1l3
http://www.rapidshare.ru/1443933
http://rapidshare.com/files/374831828/upload.rar.html
http://hotfile.com/dl/37507300/dad5939/upload.rar.html
А хотите добавить свой функционал? Или может создать собственный полноценный файлообменник типа depositfiles или letitbit? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
Gmail - правильные рассылки

Каждый почтовый сервис имеет свои собственные ограничения. Ограничения нужны исключительно для того чтобы "спамеры не поломали весь интернет" :) Давайте сегодня поговорим о том как правильно делать рассылки используя почтовый сервис gmail.
1. Соблюдайте ограничения на количество отправленных писем. В gmail вы можете отослать письмо не более 100 адресатам одновременно используя протокол pop3 или imap.
2. Если вы используете веб интерфейс почтовой службы google - gmail, количество одновременных получателей одного письма не должно превышать 500, иначе получите ошибку Gmail Lockdown in Secton 4 и не ваш почтовый аккаунт будет заблокирован на сутки.
3. Если вы делаете рассылку по собранным email адресам впервые, то возможно большой процент этих ящиков будет недействительным, и ваш аккаунт тоже может быть заблокирован и помечен, как такой что рассылает спам. Потому стоит ограничиться 25 адресатами в поле bcc.
4. Ну и последнее - если вы не заглядывали в свой почтовый ящик более 9 месяцев он будет тоже заблокирован.
PHP socks5 proxy checker
PHP socks5 proxy checker - это чекер сокс5 на php с использованием сокетов (sockets)
Требования:
php: 4/5
Код:
- <?php
- function _check_socks5 ($socks = array(), $filename)
- {
- foreach ($socks as $s)
- {
- list ($ip, $port) = explode (":", $s);
- if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
- {
- $threads [$s] = $socket;
- }
- }
- foreach ($threads as $s => $h)
- {
- fwrite ($h, "\x05\x01\x00");
- }
- foreach ($threads as $s => $h)
- {
- $r = fread ($h, 2);
- if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
- {
- file_put_contents ($filename, $s."\r\n", FILE_APPEND);
- }
- }
- }
- $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/socks5.txt")));
- _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
- ?>
Скрипт посылает строчку \x05\x01\x00 каждому соксу с которым удалось соединиться, если первые 2 байта ответа \x05\x00\ то socks5 считается валидным. (см socks rfc http://www.codenet.ru/webmast/socks51.php)
А хотите добавить свой функционал? Или может создать полноценный сервис раздачи proxy? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
PHP синонимайзер текста
Простой синонимайзер текста написан на php.
Требования:
php: 4/5
Код:
- <?php
- list($usec, $sec) = explode(' ', microtime());
- $x = (float) $sec + ((float) $usec * 100000);
- mt_srand($x);
-
- $line=implode('',file("in.txt"));
- preg_match_all("|{(.*)}|U",$line,$out);
- for ($x=0;$x {
- $ss=explode("|",$out[1][$x]);
- $line=str_replace("{".$out[1][$x]."}",$ss[mt_rand(0,(count($ss)-1))],$line);
- }
- $ff=fopen("out.txt","w+");
- fwrite($ff,$line);
- fclose($ff);
- ?>
Для того чтобы задать варианты синонимов используются макросы {слово1|слово2|слово3}. Исходный текст ложится в файл in.txt. Результаты работы скрипт пишет в out.txtА хотите добавить свой функционал? Может поддержку дополнительных макросов или базу синонимов? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
PHP прокси чекер (curl_multi)
Простой php прокси чекер с использованием curl_multi
Требования:
php: 4/5
curl: on
safe mode: off
Настройка:
Установить собсвенные значения тамаутов (см CURLOPT_CONNECTTIMEOUT и CURLOPT_TIMEOUT)
Код (checker.php):
- <?php
- $proxies = file ("proxies.txt");
- $mc = curl_multi_init ();
- for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
- {
- $c [$thread_no] = curl_init ();
- curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
- curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
- curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
- curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
- curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
- curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, 0);
- curl_multi_add_handle ($mc, $c [$thread_no]);
- }
-
- do {
- while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
- if ($execrun != CURLM_OK) break;
- while ($done = curl_multi_info_read ($mc))
- {
- $info = curl_getinfo ($done ['handle']);
- if ($info ['http_code'] == 301) {
- echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
- }
- curl_multi_remove_handle ($mc, $done ['handle']);
- }
- } while ($running);
- curl_multi_close ($mc);
- ?>
А хотите добавить свой функционал? Или может создать полноценный сервис раздачи proxy? Нет проблем, сделаем! Пишите прямо сейчас icq: 781-741
PHP Proxy Checker (curl_multi)
Начал реализацию через обычный curl и мускул. В процессе тестирования стало ясно что ждать результатов в этом году уже нам не придется :) И я начал курить гугль по тематике много поточности.
Много поточности в php нету и наверное не будет. Есть только извращенные методы эмуляции, которые дают результат, но далеко не идеальный.
Короче, не стал я забивать голову процессами, сокетами, сторонними модулями и тд, а начал ковырять curl_multi который позволяет делать POST GET HEAD запросы в несколько потоков и не только.
Много реализаций перелопатил, облазил много форумов блогов и в результате создал как мне кажется "правильный код" который делает то что мне нужно. Давайте рассмотрим код в деталях:
1. Открываем файлик с проксиками proxies
- $proxies = file ("proxies.txt");
2. Создаем мультикурл и получаем его хендл- $mc = curl_multi_init ();
- for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
- {
- $c [$thread_no] = curl_init ();
- curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
- curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
- curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
- curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
- curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
- curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, 0);
- curl_multi_add_handle ($mc, $c [$thread_no]);
- }
Далее идет процесс проверки проксей на валидность.
- do {
- while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
- if ($execrun != CURLM_OK) break;
- while ($done = curl_multi_info_read ($mc))
- {
- $info = curl_getinfo ($done ['handle']);
- if ($info ['http_code'] == 301) {
- echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
- }
- curl_multi_remove_handle ($mc, $done ['handle']);
- }
- } while ($running);
- curl_multi_close ($mc);
В полученом заголовке странички стоит редирект через header, потому что адрес http://google.com не используется а Гоша перебрасывает всех на www.google.com.
Чтобы получить код http header 301 использую функцию $info = curl_getinfo ($done ['handle']); ну и дальше уже делаю проверку кода и вывод результатов if ($info ['http_code'] == 301) { echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n"; }
Проанализировав подобные конструкции я понял что у большинства программистов проблемы возникают в реализации параллельных запросов а именно в обработке рузультатов.
Многие пишут код в котором результаты обрабатывают уже после завершения всех запросов. В моем коде реализовано все как нужно и при тестах однопоточного чекера и этого на платформе windows видно что скорость работы скриптов разная и многопоточность в multicurl действительно работает.
Так что пользуйтесь на здоровье.
Скачать сорец прокси чекера можно по ссылке [PHP прокси чекер (curl_multi)]
Настройка CRONTAB
1 ручной - нужно отредактировать файл /etc/crontab прописав задание в нужном формате: minute hour day month dayofweek command
где minute - любое целое число от 0 до 59
hour - любое целое от 0 до 23
day - любое целое от 1 до 31 (день должен быть корректным, если указан месяц)
month - любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)
dayofweek - любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)
command - команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария.
2 через панель direct admin - зайти в панель там будет пункт "Cron Jobs" и примерно такая картинка

Теперь о том как нам настроить cron на запуск нашего скрипта каждые 5 минут. Заполняем поля звездочками кроме minute там ставим */5 тоисть запускать каждые 5 минут, и в поле command пишем
/usr/local/bin/php -f /home/public_html/parser.php если запускаем через php
/usr/bin/wget http://site.com/parser.php если запускаем через wget
Как посадить php скрипт на cron? Пишем собственный php cron.
1. Чтобы скрипт сохранял текущее состояние а именно позиции файлов значение переменных в файл или базу БД бля того чтобы после перезапуска продолжить с места остановки.
2. Настроить службу крона для перезапуска вашего скрипта
После того как первый пункт выполнен и ваш скрипт после перезапуска продолжает работу с прерваного места нужно создать файл cron.php который будет следить за вашим скриптом и в случае необходимости перезапускать его. Ну а уже сам crontab настроить на запуск cron.php. Вот собственно содержимое файла cron.php.
<?php
$out = shell_exec('ps ux');
if ((!eregi('metka', $out)) && ($out!=""))
{
shell_exec ("/usr/local/bin/php -f /home/public_html/parser.php metka");
} else {
echo "already runned";
}
?>
Почему php скрипт отключается?
1. Нехватка памяти - в этом случае нужно выделить скрипту больше памяти. Установка нужного значения memory_limit в php.ini решает проблему.
2. Ошибки. Они могут возникать в процессе загрузки и парсинга страницы. Иногда сервер выдает ошибку с надписью Service Unavailable, это значит что он перегружен. Вместо контента парсер а именно зачастую функции preg_match_all парсит именно эту надпись :) или вообще пустой контент. Избежать возникновение ошибок в такой случае можно простой проверкой if (@$content!="") или же if (@preg_match_all(...)).
3. Для "вечной" работы скриптов используйте функции set_time_limit (0); ignore_user_abort (true);
Если ваш скрипт все-равно "падает" его нужно "посадить на крон" при этом реализовать функцию сохранения текущего состояния процесса для того чтобы при перезапуске скрипт продолжил работу с прерванного места.
Читайте далее о том Как посадить php скрипт на крон?
Полезные java script функции
GetElementsByClass by Dustin Diaz
function getElementsByClass(searchClass,tag,node) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
addLoadEvent() by Simon Willison
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}
Определение координат объекта:
function getAbsoluteTop(obj) {
var posTop = 0;
while (obj.offsetParent)
{posTop += obj.offsetTop; obj = obj.offsetParent;}
return posTop;
}
function getAbsoluteLeft(obj) {
var posLeft = 0;
while (obj.offsetParent)
{posLeft += obj.offsetLeft; obj = obj.offsetParent;}
return posLeft;
}
Определение размеров видимой области браузера:
function getSize(){
var _size = {};
if (window.innerHeight) {
_size.h = window.innerHeight; _size.w = window.innerWidth;
} else {
_size.h = document.documentElement.clientHeight;
_size.w = document.documentElement.clientWidth;
}
return _size;
}
Кроссплатформенный код определения размеров браузера и позиций скроллбаров:
function f_clientWidth() {
return f_filterResults (
window.innerWidth ? window.innerWidth : 0,
document.documentElement ? document.documentElement.clientWidth : 0,
document.body ? document.body.clientWidth : 0
);
}
function f_clientHeight() {
return f_filterResults (
window.innerHeight ? window.innerHeight : 0,
document.documentElement ? document.documentElement.clientHeight : 0,
document.body ? document.body.clientHeight : 0
);
}
function f_scrollLeft() {
return f_filterResults (
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
function f_scrollTop() {
return f_filterResults (
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
function f_filterResults(n_win, n_docel, n_body) {
var n_result = n_win ? n_win : 0;
if (n_docel && (!n_result || (n_result > n_docel)))
n_result = n_docel;
return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
Еще один вариант определения scrollTop и scrollLeft:
function getBodyScrollTop() {
return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}
function getBodyScrollLeft() {
return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}
Функция проверки полей формы перед отправкой:
function SendForm() {
if (document.forms[0].name.value == "") {
alert('Пожалуйста, введите Ваше имя');
document.mailform.name.focus();
return false
}
if (document.forms[0].email.value == "") {
alert('Пожалуйста, введите электронный адрес');
document.mailform.email.focus();
return false
}
return true;
}
Установка обработчика события onload для страницы:
function setGlobalOnLoad(f) {
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null
if (root){
if(root.addEventListener) root.addEventListener("load", f, false)
else if(root.attachEvent) root.attachEvent("onload", f)
} else {
if(typeof window.onload == 'function') {
var existing = window.onload
window.onload = function() {
existing()
f()
}
} else {
window.onload = f
}
}
}
Фильтр ввода для текстового поля
<input type="text" onkeypress="return testKey(event)">
<script type="text/javascript">
function testKey(e)
{
// Make sure to use event.charCode if available
var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);
// Ignore special keys
if (e.ctrlKey || e.altKey || key < 32)
return true;
key = String.fromCharCode(key);
return /\w/.test(key);
}
</script>
Генератор случайных чисел на java script
function getrandom() {
var min_random = 0;
var max_random = 10;
max_random++;
var range = max_random - min_random;
var n=Math.floor(Math.random()*range) + min_random;
return n;
}
Функций получения значения елемента radiobutton
function getRadioValue(name)
{
for (var i = 0; i < name.length; i++)
{
if (name[i].checked == true)
{
return name[i].value;
}
}
return null;
}
Функция "выхода" из фрейма
if (window.parent.frames.length == 0) {
location.href="index.htm?"+location.pathname;
}
Определение типа и версии браузера
var browser_name = navigator.appName;
var browser_version = parseFloat(navigator.appVersion);
Дата модификации документа
document.write ("Дата последней модификации: "+ document.lastModified);
Ссылка сделать страничку стартовой
<p><a href="#" onClick="this.style.behavior='url(#default#homepage)';
this.setHomePage('http://www.yoursite.com/'); return false;">
Сделать стартовой страницей</a></p>
Добавление странички в "Избранное"
<p><a href="#" onClick="window.external.addFavorite
('http://www.yoursite.com/', 'Description'); return false;">
Добавить сайт в Избранное</a></p>
Распечатка страницы
var browser_name = navigator.appName;
function printit(){
if (browser_name == "Netscape") {
window.print() ;
} else {
var WebBrowser = '<object id="WebBrowser1" width=0 height=0
classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(6, 2);
}
Определение координат курсора мышки
function mouseCoords(ev) {
if (ev.pageX || ev.pageY) {
return {x:ev.pageX, y:ev.pageY};
}
var docBody = document.documentElement
? document.documentElement
: document.body;
return {
x: ev.clientX + docBody.scrollLeft - docBody.clientLeft,
y: ev.clientY + docBody.scrollTop - docBody.clientTop
};
}
Пока все. Но, продолжение следует ...