![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Предположим есть штук 200 url такого вида: http://myserver.com/myScript.php?one=1&two=2&three=3
Если запускать через браузер все 200, то сервак (наш) "захлебывается", начинается борьба IIS с MSSQL. Для firefox'a я не нашел никаких плагинов, которые могли бы поставить в очередь запросы (не говорю про POST, хотябы GET). Скриптов подобных на самом деле тьма, они писались не один год и сейчас их переписывать, чтобы их все скоординировать очень долго, а на это уже нет времени, завал. Если 200 запросов поставить на ночь выполняться по очереди то всё будет нормально и утром всё будет обработано. Если ставить сразу 200, то SQL сервак в один прекрасный момент становится в позу и начинает бычить, то ему таймаута не хватило, чтобы увеличить файл базы данных, то других таймаутов. Как один из вариантов хотел использовать php.exe с передачей параметров в .php скрипт. Написал .bat'ник, который вызывает по очереди каждый скрипт, но вот как я не изгалялся - передать параметры в него не получается. Наверно способов 5 перепробовал. Может кто-нибудь подскажет на рабочем примере? Самый популярный вариант в интернете:
Не работает. Пытался экранировать амперсанд "^&", пытался его конвертить "%%26", пытался передавать параметра так "--one=1 --two=2". Пытался без имен параметров передавать "1 2 3". Пытался и с ключами через пробел "one=1 two=2 three=3"В общем нивкакую. Скрипт работает и честно выдает Warning, что переменная пуста. Варианты типа скачай через downthemall отпадают, если в этих вариантах нет настройки для установки таймата ответа от сервера в несколько часов. В downthemall этот таймаут 15 минут, несмотря на то, что в firefox можно выставить любое значение. Это сообщение отредактировал(а) SABROG - 1.4.2010, 20:52 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Я был там сегодня уже, читал комментарии. Может быть кто-нибудь скажет на какой именно комментарий обратить внимание, так как предлагаемые там варианты (о которых я написал в первом посте) я уже испробовал и они не работают. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Что за бред? Какая переменная пуста? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Начиная с самой первой - "one" Мне сейчас хотелось бы услышать не встречные вопросы, которые ни к чему не приведут, я до завтрашнего дня все равно ничего перепроверить не смогу, а вариант который был лично вами испробован под Windows и который действительно работал, желательно с версией php. Людей отсылающих в гугл и по статьям прошу даже не писать. На это сегодня был убит целый час и обилие неработающих вариантов только усугубляет дело. Прошу ответить того кто лично сам вбивал эти параметры в командной строке Windows и у него все работало. В качестве уточнения. PHP скрипт это скрипт сайта, не консольная альтернатива с параметрами argc/argv. Он не ожидает, что ему будут передавать параметры никак кроме как по ссылке с html страницы (get) и менять его никто не будет. |
|||
|
||||
| IgorIV |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Так мало Из первого поста не все было ясно, потому такие ответы. По сути получается.
Потому переменная и пуста, что её нет в гет массиве. Раз нет надо поместить. В дополнении к шелл-скрипту допиши простой php-скрипт.
Ах да, забыл про Виндоуз. Извини, у меня php только на сервере с FreeBSD. Так что зря все это расписал ... Это сообщение отредактировал(а) IgorIV - 2.4.2010, 01:22 |
||||||
|
|||||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Это абсолютно неважно. IgorIV, правильно сказал, пишется простейший враппер-раннер. И все работает. Добавлено через 21 секунду Даже под win -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Да целый день что-то искал, сначала на работе, потом дома. Постоянно какие-то проблемы, приходится переключаться с одной проблемы на другую, времени не хватает, ложусь в 4 утра.
Вот тебе и "че за бред", оказывается не всё так просто.
noname2.php, как я понял, и есть wrapper? А в каком месте у него вызывается noname1.php? В общем нужен require_once("myScript.php"): http://ru2.php.net/manual/en/features.commandline.php#94912 Это сообщение отредактировал(а) SABROG - 2.4.2010, 08:48 |
||||
|
|||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 5 Всего: 39 |
Вам нужно зайти с другой стороны.
Напишите скрипт, где вызывайте по очереди свои 200 url. Да на том же php.
Этот скрипт уже запускайте из командной строки: php.exe test.php |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
На нашем серваке я не обнаружил установленного модуля curl в phpinfo.
Если немного отвлечься от темы PHP, не кажется ли вам, что всё это попахивает утопией? Чтобы поставить в очередь запуск ссылок нужно городить немыслемые комбинации. |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 5 Всего: 39 |
А что у вас за сервер? На Linux/BSD это проще сделать через bash скрипт и wget/curl.
Кажется, но вы сами довели это до утопии. Зачем вообще эти долго выполняющиеся операции было сувать в web скрипты? Логичнее было создать консольный сценарий и запускать его по крону или еще каким либо образом. |
|||
|
||||
| SABROG |
|
||||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Именно сейчас занимаюсь его установкой, еще вчера была такая мысль.
Работа с SQL сервером это очень долгая операция, особенно когда в ней около 5 миллионов INSERT'ов в цикле. Цифры меняются каждый день, это поток. Данные получаются из XML'я.
Не получается так. Сотрудники скачивают с сайтов партнеров XML файлы разного формата вручную и выборочно. Выбор может сделать только человек, на машину это перевесить нельзя, она не умеет принимать решения основанные на текстовом описании к файлу сделанном руками других людей. Стандартного формата описания нет, это скорее комментарий. Сервер MSSQL, соответственно никакие FreeBSD не помогут. Вставка идет через BULK INSERT, на разные сервера web сервер и MSSQL развесить не получается. Файл для BULK INSERT'а очень проблематично передавать между FreeBSD и Windows, SAMBA работает очень не стабильно. --- В общем решил вопрос через wget: //list.txt
Если wget вызывается с URL'ом в виндовой консоли, то знак амперсанда "&" надо экранировать так "^&" (кавычки убрать). Это сообщение отредактировал(а) SABROG - 2.4.2010, 13:07 |
||||||||
|
|||||||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Как разовое решение этот вариант еще допустим. Но для постоянного варианта - это полный идиотизм. Может вы сами себя еще и через пару проксисерверов будете вызывать? Все крайне элементарно. Но оказывается вы банально не знаете разницы между CLI и WEB приложением. И тот факт что параметры они получают по-разному. Печально. А враппер состоит из целых3 строк - мегасложная вещь. Добавлено через 1 минуту и 51 секунду Жесть, забаньте его кто-нибудь и тему закройте, чтобы это не расползлось по сети. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Покажи мне такой CLI враппер из трех строк, который поменяет значения в $_GET переменной на нужные мне, вызовит мой WEB скрипт и я тебе подниму репутацию. Пока я от тебя слышу одни оскорбления и никакой конкретики.
Я в основном на C++ программирую, видеть PHP скрипт в виде "полноценной программы" для меня дико. Я это не приемлю по религиозным соображениям. На то, чтобы сделать то, что сейчас уже сделано на PHP скриптах ушло очень много времени, в основном на обход багов и недоработок php модуля под windows. Тем не менее мне пришлось заниматься переписыванием и допиливанием скриптов, которые писал другой человек, при этом я почти не знал PHP и после года общения с этим "скриптовым языком" у меня совершенно нет желания продолжать его изучать.
Приведи единственное верное и рабочее решение и расползется по сети правильный вариант, покажи, что ты не просто так получил свои 30 очков репутации (комменты к очкам хорошо отражают вашу суть). P.S.: сегодня через wget удачно обработал все 200 скриптов, проблема возникла позже, когда я попытался использовать ключ --input-file. NTLM аутентификация с ним не проходит нивкакую, спустя несколько часов понял, что в системе помимо новой стоит еще и старая версия wget... Это сообщение отредактировал(а) SABROG - 3.4.2010, 10:45 |
||||
|
|||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Бгг... Это дескать - счастье мне привалило - репутация У меня не то настроение, чтобы выполнять Ваше "Сделайте за меня" и у Вас нет сисек Хотите разобраться - не вопрос. Хотите чтобы я сделал за Вас - увольте. Собственно это и есть причина Ваших проблем. Вам лень и не хочется разбираться. Решение Вам уже предложил IgorIV, но Вы даже не удосужились разобраться в нем - лентяй. Раз Вам лень - наймите специалиста, который будет менее щепетилен в "религиозных соображениях". P.S. про 3 строчки я соврал. Достаточно 2 строчки. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |