Скрипт на локальном хостинге работает полностью, на сервере нет

12
TI
На сайте с 09.01.2012
Offline
47
1304

Есть 3 файла (2 php, 1 txt).

Суть:

Первый php считывает построчно второй текстовый, и запускает третий с параметрами, третий заходит на странички (в параметрах урл), обрабатывает, и сохраняет в текстовый фал, под названием параметра.

На локалке все работает, сколько строчек отправляешь на вход, столько и файлов получаешь. на хостинге не работает, точнее выдает только последний файл (последнюю строку). В чем дело, где ошибка?

1 файл для запуска (php):

<?php 

ini_set("max_execution_time", "6000");
$ch = curl_init();
$base = file("/путь/файл2.txt");
$result = array();
foreach($base AS $row) {
curl_setopt($ch, CURLOPT_URL,$row); // Установка url
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// Разрешение редиректов
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // Данные будут возвращены в переменную
curl_setopt($ch, CURLOPT_TIMEOUT, 3); // Таймаут
curl_setopt($ch, CURLOPT_POST, 1); // Передача методом POST
curl_setopt($ch, CURLOPT_POSTFIELDS, ""); // POST переменные
$result = curl_exec($ch); // Выполнение
sleep(5);
}
curl_close($ch);
?>

2 файл (текстовый) для запуска 3 файла с параметрами

путь/файл3.php?urlik=параметр1

путь/файл3.php?urlik=параметр2
путь/файл3.php?urlik=параметр3

3 файл (php)

<?PHP require_once 'simple_html_dom.php';

$str = $_GET['urlik'];
$data = file_get_html('http://site.ru/'.$str);
..тут работаем с $data и сохраняем в $a..
$f = fopen("путь".$str.".txt", "w");
fwrite($f, $a);
fclose($f);
?>
IL
На сайте с 20.04.2007
Offline
435
#1
TheInvisible:
В чем дело, где ошибка?

пробуйте локализовать.

Что CURL возвращает (сюда сам вывод писать не нужно, смотреть, отрабатывает ли)?

Выполняется ли весь цикл как нужно?

Вызываются ли адреса?

Можно ли создать файлы с нужными именами (хватает ли разрешений?)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
TI
На сайте с 09.01.2012
Offline
47
#2
ivan-lev:
пробуйте локализовать.
Что CURL возвращает (сюда сам вывод писать не нужно, смотреть, отрабатывает ли)?
Выполняется ли весь цикл как нужно?
Вызываются ли адреса?
Можно ли создать файлы с нужными именами (хватает ли разрешений?)

Права 777, адреса вызываются, цикл выполняется, но почему сохраняет только последний результат?

olympteka
На сайте с 08.06.2013
Offline
16
#3

Может презезаписывается файл, так как параметры во всех трёх вызовах одинаковы. Проверьте параметры. Скрипты на локалке и хостинге идентичны?

UNIT-IS
На сайте с 19.10.2012
Offline
48
#4

Количество строк меняли? Оставьте одну затем две. В любом случае подхватывается только последняя?

Версии php разные? Включите максимальный уровень дебага.

TI
На сайте с 09.01.2012
Offline
47
#5
olympteka:
Скрипты на локалке и хостинге идентичны?

Да, одинаковые файлы...

UNIT-IS:
Количество строк меняли? Оставьте одну затем две.

Делал...

UNIT-IS:
В любом случае подхватывается только последняя?

Да, только последняя.

olympteka
На сайте с 08.06.2013
Offline
16
#6
TheInvisible,Да, только последняя.

Тоесть, если в текстовом файле только одна строка, то вообще не создаётся никакого файла? А если две строки - то создаётся только с параметрами второй? или то же никакого файла?

TI
На сайте с 09.01.2012
Offline
47
#7
olympteka:
Тоесть, если в текстовом файле только одна строка, то вообще не создаётся никакого файла? А если две строки - то создаётся только с параметрами второй? или то же никакого файла?

если одна, создается, если 2, то с параметрами 2-ой, если 6-ть, то с 6-ой...

Сейчас прикреплю скриптик к топику...

olympteka
На сайте с 08.06.2013
Offline
16
#8

TheInvisible,

Как используется $result? Может нужно $result[] = curl_exec($ch); ($result заменить на $result[] в фориче).

UNIT-IS
На сайте с 19.10.2012
Offline
48
#9

Запускать на другом хостинге пробовали?

Можно попробовать альтернативу, к примеру:

$file = file_get_contents('/путь/файл2.txt');

foreach(preg_split("/((\r?\n)|(\r\n?))/", $file) as $line){

// Работаем с $line ....

}

---------- Добавлено 01.08.2013 в 10:43 ----------

olympteka:
TheInvisible,
Куда передаётся $result? Может нужно $result[] = curl_exec($ch); ($result заменить на $result[] в фориче).

И ничего от этого не изменится. Это всего лишь сокращенная форма задания массива.

"As of PHP 5.4 you can also use the short array syntax, which replaces array() with []."

---------- Добавлено 01.08.2013 в 10:46 ----------

Кстати,

foreach($base AS $row) {....

заменить на

foreach($base AS $row => $line) {

//Работаем с $line...

TI
На сайте с 09.01.2012
Offline
47
#10

маленький пример... У кого есть возможность проверьте...

Файл для запуска zapusk.php

Должно появится после обработки 3 файла.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий