Вопрос № 49677: Как или где найти скрипт для Скачивания файлов с другого хоста на свой!
к примеру на www.фаил.Ру/ есть фаил superproga.zip мне надо слить его на www.my.ru/superproga.zip возможно такое ?...Вопрос № 49693: Добрый День!
Я бы хотел счётчик посещение переделать, что бы он хранил данные не в текстовом файле а в MysQL. Можно посмотреть его в работе на сайте http://setcms.org/
Код
<?php
if (INC !== 1) die();
$punkts = "...Вопрос № 49694: хочу залить из одного хоста фаил в свой мне ответили
$lines = file('www.my.ru/superproga.zip');
но так как я ни <font color=cc0000>ничего</font> в php не смыслю напишите продолжение
И как включить fopen wrappers ...Вопрос № 49700: Задачка 1. Перекинуть с помощью PHP-скрипта файл с одного ftp-сервера на другой. (что-то вроде ftp-файлменеджера)
Подскажите красивое решение, плз.
Задачка 2. Усложнение задачки 1 - размер файлов может достигать некольких десятков мегаба...Вопрос № 49729: Здравствуйте, я хочу установить каталог работающий с базой, но у меня проблема с кодировкой, все руские буквы преврощаются в знак вопроса,
это только те слова которые из базы данных.
Вы не вкурсе что нужно сделать что бы исправить эту ошибку...Вопрос № 49736: Эксперты, помогите пожалуйста, встал в такой тупик что не знаю как выбраться :)
В общем, вот код:
while ($data=mysql_fetch_row($query))
{
if ($data[0]%1000===0)
{
mysql_query("UPDATE ".$server['table_prefix'...Вопрос № 49737: Доброго времени суток уважаемые эксперты.
Такая проблема есть текстовый файл в нем куча строк я разбиваю файлик по строкам и потом разбиваю строки и начинаю скидывать все массив с разбитыми строками в таблицу БД на mysql скидывается примерно 5% ф...Вопрос № 49786: Хай эксперты!
У меня 3 вопроса:
1. чё код из приложения на локальном серве работает, а в инете нет?
2. посоветуйте бесплатный хостинг где этот скрипт пойдёт.
3. как в ПХП соеденить две строки в одну?
Зарание спасибо!...
Вопрос № 49.677
Как или где найти скрипт для Скачивания файлов с другого хоста на свой!
к примеру на www.фаил.Ру/ есть фаил superproga.zip мне надо слить его на www.my.ru/superproga.zip возможно такое ?
можно так
$lines = file('www.my.ru/superproga.zip');
читаем в массив ... ну а потом сохранить массив не составит труда
ЗЫ подробности здесь
http://www.php.net/manual/ru/ref.filesystem.php
Ответ отправил: Santana (статус: 4-ый класс)
Ответ отправлен: 20.07.2006, 12:04
Вопрос № 49.693
Добрый День!
Я бы хотел счётчик посещение переделать, что бы он хранил данные не в текстовом файле а в MysQL. Можно посмотреть его в работе на сайте http://setcms.org/
$blocks.=$blocks_razdel;
?>
Или если у вас похожий, что бы показывал
Счётчик
Ваш IP 192.168.55.121
Сегодня :
Хитов : 1010
Хостов : 205
Онлайн : 13
Всего :
Хитов : 2189
Хостов : 399
Рекорд : 22 посетителей одновременно 19.07.2006 (19:57)
Заранее большое спасибо!
Отправлен: 20.07.2006, 14:14
Вопрос задал: Fallout (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: AckerMAN
Здравствуйте, Fallout!
Есть альтернативвный счетчик - Spanuck Total Counter. Я его скачал с сайта http://spanuck.forever.kz, также посмотрите на сайте http://sad-raven.nm.ru и http://spanuck.nm.ru.
--------- Тише едешь - дальше будешь
Ответ отправил: AckerMAN (статус: 2-ой класс)
Ответ отправлен: 21.07.2006, 11:51 Оценка за ответ: 2 Комментарий оценки: Спасибоза за счётчик, всё равно он не подходит, он хранит даные в txt а я хочу на Mysql.
Вопрос № 49.694
хочу залить из одного хоста фаил в свой мне ответили
$lines = file('www.my.ru/superproga.zip');
но так как я ни ничего в php не смыслю напишите продолжение
Отвечает: Марк Крейн
Здравствуйте, АРистов Николай!
Итак, по пунктам:
1. В файле php.ini (основной файл конфигурации php) директива allow_url_fopen должна иметь значение On и не быть закомментированной (перед ней не должен стоять символ точки с запятой. В итоге в данном файле должна присутствовать такая строка:
allow_url_fopen=On
2. В PHP существует функция copy, которая копирует файлы. Начиная с версии PHP 4.3.0, в качестве параметров функции разрешено передавать URL-адреса. Этим и воспользуйтесь. В общем, если хост, на котором находится файл - www.file.ru, а Ваш хост - www.yourhost.ru, тогда код должен выглядеть примерно так:
(см. приложение)
Приложение:
Ответ отправил: Марк Крейн (статус: Студент)
Ответ отправлен: 20.07.2006, 15:05
Отвечает: AckerMAN
Здравствуйте, АРистов Николай!
Есть такой хорший скрипт, только его могут посчитать за хакерство :( В общем, запрос такой (для wget): download.php?file_wget='URL-файла' -o 'куда_закачивать_полный_путь_и_имя_файла' а для GET такой download_adv.php?file_GET='URL-файла' > 'куда_закачивать_полный_путь_и_имя_файла'.
Зависит от того, на какой системе закачивается файл. Сначала нужно проверить, есть ли на сервере wget или GET. Синтаксис: download_adv.php?check=wget или так: download_adv.php?check=GET. Если выведется путь к программе (напр., /usr/bin/wget и т.п.), то все OK. А если ничего - то попробуйте второй вариант. .Файл download_adv.php с формой, для удобства. Если не попрет, то только тогда используйте стандартынй download.php (только в КРАЙНЕМ случае). Скрипт в приложении. Для их работы нужна *nix-ос и программа wget
или GET, или любая другая консольная качалка, но в этом случае делайте так: download_adv.php?other=путь_к_качалке_и_'параметры'. Вообще, просто запустите download_adv.php, там все и так понятно. Узнать версию ОС: download_adv.php?os Файл НЕ ПЕРЕИМЕНОВЫВАЙТЕ!!! Также необходимо иметь доступ на запись в конечный каталог! Нужен перл-скрипт, зайдите сюда: http://www.xakep.ru/articles/releases, поищите статью самый быстрый даунлоад. Статья есть на http://wisesoft.ru/xakep в
выпуске №26. Удачи! ВНИМАНИЕ!! Я не несу ответственности за использование скрипта, так как он исполняет комманды на сервере для скачивания файлов.
Приложение:
--------- Тише едешь - дальше будешь
Ответ отправил: AckerMAN (статус: 2-ой класс)
Ответ отправлен: 21.07.2006, 11:52
Вопрос № 49.700
Задачка 1. Перекинуть с помощью PHP-скрипта файл с одного ftp-сервера на другой. (что-то вроде ftp-файлменеджера)
Подскажите красивое решение, плз.
Задачка 2. Усложнение задачки 1 - размер файлов может достигать некольких десятков мегабайт. При медленной связи с серверами и стандартном подходе - читаем отсюда/пишем сюда - скрипт теоретически заткнётся по таймауту через 2 минуты (правило хостера). Как обойти? Могут ли в этом помочь сокеты? Если да то как с помощью них реализовать?
Отвечает: Марк Крейн
Здравствуйте, Иваненко Виктор Анатольевич!
Ответ на 1-ю задачку:
Я бы посоветовал одно из двух: либо использовать функцию copy($source_file, $dest_file) при включённом allow_url_fopen в php.ini. (что более красиво).
Либо следующее: сначала читаем файл в массив, потом создаём точно такой же файл (fopen("file.txt", "w")) и туда пишем весь массив построчно. (что менее красиво и надёжно).
Что касается усложнения (вторая задачка...). В принципе если очень медленная связь, то скрипт в любом случае заткнётся. Честно говоря я не знаю механизм работы функции copy(), но в этом варианте предложил бы сначала полностью прочитать весь файл в массив. Потом сначала создать файл, а потом открыть его в режиме добавления. Вот так: fopen("file,txt", "a+"). И ещё можно в каждый момент времени запоминать позицию чтения файла (в этом вам поможет функция ftell($resource_file). Таким образом,
если связь прервётся, можно будет возобновить "копирование". Данные будут именно добавляться к концу файла (модификатор "a+") и именно с той позиции, с какой прервалось копирование. Но если честно, я думаю что файл в несколько десятков мегабайт лучше, надёжнее и быстрее скопировать либо с помощью download-менеджера, либо используя DSL-соединение.
Ответ отправил: Марк Крейн (статус: Студент)
Ответ отправлен: 20.07.2006, 16:45 Оценка за ответ: 4 Комментарий оценки: allow_url_fopen у хостера к сожалению выключена. Файлы будут преимущественно бинарные. увы. Как узнать, что связь прервалась программно, если скрипт заткнётся. Тут нужна многозадачность - запустил в отдельный процесс задачку в фоне, и забыл про неё. А основной скрипт, предположим, запускается кроном, читает логи этих фоновых процессов и корректирует
итоги запуском новых. Что-то в этом роде... Как считаете, возможно?
Отвечает: Булыгин Анатолий Алексеевич
Здравствуйте, Иваненко Виктор Анатольевич!
Функция copy(Исходник, место);
Поможет вам при решении 1 задачи.
Что касается Задачи #2, я бы посоветовал копировать файл "кусками",в этом вам поможет функция ftell();.
C уважением, Булыгин А.А.
Ответ отправил: Булыгин Анатолий Алексеевич (статус: 2-ой класс)
Ответ отправлен: 20.07.2006, 17:24 Оценка за ответ: 3 Комментарий оценки: Как контролировать закачку? Сколько уже закачалось, а на чем застопорилось? Кроме того, а если много мелких файлов, как контролировать их заказчку? Повторяю, нужен автомат, который запустил бы копирование в фоне и спокойно завершился. Это возможно? Есть варианты? Мне кажется нужно копать в сторону работы с сокетами, но совершенно ничего в них пока не понимаю.
Отвечает: Cimus
Здравствуйте, Иваненко Виктор Анатольевич!
FTP-клиент низкого уровня
<?
//инициализация
$host_ip=gethostbayname('localhost');
$s=socket_create(AF_INET, SOCK_STREAM, 0);
$login='логин';
$pass='пароль';
//соединение с сервером
if(!($res=@socket_connect($s,$host_ip, 21)))
die ('error connect');
//отправляем команду и читаем результат авторизации имени пользователя
$str="USER $login
";
socket_write($s,$str,strlen($str));
print '<p>>'.$str;
printf("<p>< %s", socket_read($s,1000, PHP_NORMAL_READ));
socket_read($s,1000, PHP_NORMAL_READ);
//отправляем команду и читаем результат авторизации паролем
$str="USER $pass
";
socket_write($s,$str,strlen($str));
print '<p>>'.$str;
printf("<p>< %s", socket_read($s,1000, PHP_NORMAL_READ));
socket_read($s,1000, PHP_NORMAL_READ);
//Отправляем команду SYST (определить систему) и читаем результат
$str="SYST
";
socket_write($s,$str,strlen($str));
print '<p>>'.$str;
printf("<p>< %s", socket_read($s,1000, PHP_NORMAL_READ));
socket_read($s,1000, PHP_NORMAL_READ);
?>
Работать напрямую командами не так уж и сложно, и, зная команды, Вы сможете реализовать любой протокол, начало листинга Вам должно быть понятно без дополнительных комментариев.
Продолжив этот листинг - можно написать отличный FTP-клиент, хотя я Вам этого делать не рекомендую по соображениям безопасности (хотя это красиво).
Для простой перекачки файлов Вам вполне могут подойти функции указанные в предыдущих ответах, работать с ними намного проще и безопасней.
Что бы скрипт не перестовал работать по таймауту, можно воспользоваться функцией set_time_limit(0);
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 5-ый класс)
Ответ отправлен: 21.07.2006, 00:43 Оценка за ответ: 5 Комментарий оценки: Сокетами небезопасно, потому что в этом механизме никакого контроля за источником/приёмником соединения? Чем не безопасно? Или потому что хацкеры будут использовать в качестве socks-прокси? Так ведь никто не мешает приделать к скрипту авторизацию в начале. Что опасного в сокет решении?
Вопрос № 49.729
Здравствуйте, я хочу установить каталог работающий с базой, но у меня проблема с кодировкой, все руские буквы преврощаются в знак вопроса,
это только те слова которые из базы данных.
Вы не вкурсе что нужно сделать что бы исправить эту ошибку.
Отправлен: 20.07.2006, 18:38
Вопрос задал: Virmd (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Virmd!
К сожалению, Вы не написали, какая у Вас БД, поэтому предположу, что MySQL.
Тогда решение в приложении.
Удачи!
Приложение:
--------- Ответы на все вопросы - на сайте www.ya.ru ☺
Точно такая-же пробле ма и у меня. Но я вышел из такой ситуации поставив phpMyAdmin
Ответ отправил: Kevin (статус: 1-ый класс)
Ответ отправлен: 20.07.2006, 21:01
Отвечает: Alexey Vilchinsky
Здравствуйте, Virmd!
ищете и открываете файл my.ini
ищете строку
default-character-set=
изменяете на
default-character-set=cp1251
если такой строки нет, то пишете ее сами
перезагружаете mysql сервер
всё
--------- Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: Студент)
Ответ отправлен: 21.07.2006, 08:23
Вопрос № 49.736
Эксперты, помогите пожалуйста, встал в такой тупик что не знаю как выбраться :)
В общем, вот код:
while ($data=mysql_fetch_row($query))
{
if ($data[0]%1000===0)
{
mysql_query("UPDATE ".$server['table_prefix']."forums SET forum_title=1");
}
}
Соединение с базой есть, сама база тоже есть, такое поле тоже есть. В поле random_id есть числа типа 1000, 2000, 1541, 7412, 1423 и т.д. Так вот, мне нужно чтобы если число из столбца random_id при делении (mod) на 1000 даёт в остатке 0, то в столбец forum_title вставить значение 1, иначе - 0.
Но дело в том, что у меня всё обновляется на 1. Но 1492%1000 явно не 0 )) Как быть, подскажите пожалуйста!
Всем заранее спасибо за помощь.
Попробуйте прямо привести тип значения массива.
Это можно сделать так;
if (((int)$data[0])%1000===0) ....
или
if (intval($data[0])%1000==0) ....
А самый простой способ - инвертировать условие. Т.е. написать так;
if (!((int)$data[0]%1000))
{
...
}
Должно работать.
Ответ отправил: Zysoftik (статус: 5-ый класс)
Ответ отправлен: 20.07.2006, 20:08
Отвечает: Alexey Vilchinsky
Здравствуйте, Марк Крейн!
Дело в том, что ваш запрос построен таким образом, что обновляет все строки таблицы.
Чтобы обновить только строку, для которой выполнилось условие, нужно добавить сравнение еще по какому-либо признаку. Обычно это идентификатор строки(отдельное поле, в котором хранится уникальное целое значение).
Если такого поля у вас нет, то советую вам его завести и поставить в автоинкремент.
Тогда ваша программа изменится следующим образом:
Приложение:
--------- Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: Студент)
Ответ отправлен: 21.07.2006, 08:33
Отвечает: Mamont
Здравствуйте, Марк Крейн!
При обновлении записей в таблице не забывай указывать какую запись обновлять (например WHERE id=12)
UPDATE ".$server['table_prefix']."forums SET forum_title=1 WHERE id=...
--------- Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 21.07.2006, 13:43
Отвечает: Булыгин Анатолий Алексеевич
Здравствуйте, Марк Крейн!
Внимательно посмотрите на ваш SQL запрос, он обновляет все записи в вашей таблице.
Добавьте к запросу условие WHERE
Доброго времени суток уважаемые эксперты.
Такая проблема есть текстовый файл в нем куча строк я разбиваю файлик по строкам и потом разбиваю строки и начинаю скидывать все массив с разбитыми строками в таблицу БД на mysql скидывается примерно 5% файла когда вылазит вот такая бяка
Fatal error: Maximum execution time of 30 seconds exceeded in C:wwwsitemaks.php on line 31
31 строка представляет сабой
echo "$inform[1] <br>
";
закоментил 31 строку вылезло
Fatal error: Maximum execution time of 30 seconds exceeded in C:wwwsitemaks.php on line 32
32 стока это вабще "}"
подсткажите пожалуйста в чем проблема. Заранее спасибо.
Отправлен: 20.07.2006, 20:01
Вопрос задал: Александер (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Physicist
Здравствуйте, Александер!
Проблема в том, что у Вас прописано максимальнодопустимое время выполнения скрипта в 30 с. Это значение задается в файле php.ini (max_execution_time), если его там нет, то используется значение в 30 секунд. Поменять это значение в скрипте можно командой
void set_time_limit(int seconds)
Если установить это значение в 0, то никаких ограничений по времени не будет.
PS. В безопасном режиме set_time_limit не работает - нужно менять php.ini
Ответ отправил: Physicist (статус: 8-ой класс)
Ответ отправлен: 20.07.2006, 20:11 Оценка за ответ: 5
Отвечает: Alexey Vilchinsky
Здравствуйте, Александер!
Вы не там копаете!
Есть 3 варианта:
В неправильно построенном запросе типа mysql_query("update ...")
В неправильной работе с файлом
А скорее всего криво построена работа со строками.
В конечном итоге все это вместе в цикле работает достаточно долго (более 30 секунд).
Советов здесь несколько:
1. Оптимизировать программу для ускорения работы.
2. Если возможно, в файле php.ini изменить значение max_execute_time (по умолчанию 30) на большее значение.
3. Если 2 нереализуемо, но сервер работает не в safe_mode, то изменить это значение прям из скрипта: ini_set('max_execute_time','1000')
Но выполнение пункта 1 будет наиболее продуктивным!
--------- Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: Студент)
Ответ отправлен: 21.07.2006, 08:47
Вопрос № 49.786
Хай эксперты!
У меня 3 вопроса:
1. чё код из приложения на локальном серве работает, а в инете нет?
2. посоветуйте бесплатный хостинг где этот скрипт пойдёт.
3. как в ПХП соеденить две строки в одну?
Зарание спасибо!
Отвечает: Ерёмин Андрей
Здравствуйте, Mirgorodchenko Anton!
Отвечу только на один из вопросов...
3. Очень просто: $str = $str1 . $str2; --------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: PVS
Здравствуйте, Mirgorodchenko Anton!
1. Вы открываете файл, который находится по пути указанном в $_SERVER['QUERY_STRING']. Когда Вы проделываете это на локале - все в порядке, там такой файл очевидно есть, но если сервер и клиент - разные компьютеры, то откуда ему там взятся? (если Вы его предварительно туда не загрузите)
2. Нигде не пойдет (см.выше).
3. $result_str=$part1.$part2
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 21.07.2006, 10:56 Оценка за ответ: 2 Комментарий оценки: Все файлы загружены с самого начала инета! Например http://www.yandex.ru/
Отвечает: Булыгин Анатолий Алексеевич
Здравствуйте, Mirgorodchenko Anton!
1. Ваш хостинг провайдер может "заблокировать" использование некоторых функций.
2. Я всё-таки посетовал бы вам на платный хостинг. 200 рублей в месяц, не такая уж и большая сумма.
Отвечает: Rok-set
Здравствуйте, Mirgorodchenko Anton!
А Вы уверены, что переменная $_SERVER['QUERY_STRING'] действительно существует? (Проверка переменной проводится функцией bool isset() )
Если переменной нет, вполне возможно сервер хранит ей в другом месте глобального массива. Чтобы её найти нужно "вывернуть" весь массив глобальных переменных (насколько помню - _GLOBALS [] ) и найти её место регистрации.
2. Не думаю что данная функция будет блокирована провайдером (хотя и такое возможно), возможна также блокировка некоторых данных из информации о сервере (массив $_SERVER[] как раз такую информацию и предоставляет)
--------- нет преград для разума!
Ответ отправил: Rok-set (статус: 4-ый класс)
Ответ отправлен: 22.07.2006, 05:00 Оценка за ответ: 4 Комментарий оценки: Спасибо! Хотя я и просил указать конкретно название бесплатного хостинга с ПХП5