Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Помогите, запустить php скрипт.
pansim  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 1
Пользователь №: 42224
На форуме: 1 год, 7 месяцев, 11 дней
Карма:




Добрый день! Помогите решить проблему. Есть сайт на некотором хостинге, туда копируются файлы в виде архива xml.zip для обновления базы, затем можно запустить скрипт через браузер в адресной строке (http://school2vp.ru/EJ/xml.php) и база обновляется. Надо чтобы скрипт запускался автоматически, через определенное время (в общем надо автоматизировать обновления). На хостинге есть задания по расписанию, я его там сделала, но скрипт не отрабатывается. Есть несколько вариантов запуска скрипта через задания по расписанию:

"Вызов программы php или curl для запуска PHP-скриптов:
1. php5.2 ~/папка_со_скриптом/файл_скрипта.php > /dev/null (для PHP 5.2)
2. php5.3 ~/папка_со_скриптом/файл_скрипта.php > /dev/null (для PHP 5.3)
3. php5.4 ~/папка_со_скриптом/файл_скрипта.php > /dev/null (для PHP 5.4)
4. curl -s 'http://ваш-домен.ru/папка_со_скриптом/файл_скрипта.php' > /dev/null"

При выполнении по первым двум вариантам запуска вылазит ошибка
php5.3 ~/domains/xn----7sbh3afrl9d.xn--p1ai/EJ/xml.php <html><body><p>Archive extraction failed, code: 11</p></body></html>

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

Привожу код своего скрипта:
<?php
include 'ejconn.inc';

set_time_limit(0);

$z_file = 'xml.zip';
$x_main_file = '0.xml';
$err_msg = '';

$s1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<source>\n";
$s2 = "\n</source>";

// Очистим текущий каталог от xml-файлов.
if ($handle = opendir("./"))
{
while (false !== ($file = readdir($handle)))
{
if (strtolower(substr($file, strlen($file)-4, 4))==".xml")
{
unlink("./$file");
}
}

closedir($handle);
}
// Разархивируем xml-файлы и загрузим их содержимое в базу данных.
$zip = new ZipArchive;
$res = $zip->open("./$z_file");
if ($res === TRUE)
{
$zip->extractTo("./");
$zip->close();

if (EJDB::connect_db())
{
$err_msg = "Error connect DB";
}
else
{
$q = "CREATE TABLE IF NOT EXISTS Students (
StuId bigint(20) NOT NULL auto_increment,
StuPID varchar(20) default NULL,
StuPassword varchar(40) default NULL,
StuEnabled tinyint(1) NOT NULL default '1',
StuTimeCode int(11) default NULL,
StuDeleted tinyint(1) NOT NULL default '0',
PRIMARY KEY (StuId),
UNIQUE KEY StuPID (StuPID)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
;
$res = EJDB::$Conn->query($q);

$q = "CREATE TABLE IF NOT EXISTS StudentsData (
DatId bigint(20) NOT NULL auto_increment,
DatStudentId bigint(20) default NULL,
DatParam1 varchar(20) default NULL,
DatParam2 varchar(20) default NULL,
DatParam3 varchar(20) default NULL,
DatParam4 varchar(20) default NULL,
DatData longtext,
PRIMARY KEY (DatId),
KEY DatStudentId (DatStudentId),
KEY DatParam1 (DatParam1),
KEY DatParam2 (DatParam2),
KEY DatParam3 (DatParam3),
KEY DatParam4 (DatParam4)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
;
$res = EJDB::$Conn->query($q);

$time_code = time();
$x = simplexml_load_file("./$x_main_file");

$stmt_u_stu = EJDB::$Conn->prepare("UPDATE Students SET StuPassword=?, StuTimeCode=?, StuDeleted=0 WHERE StuPID=?");
$stmt_u_stu->bind_param("sis", $StuPassword, $time_code, $StuPID);
$stmt_i_stu = EJDB::$Conn->prepare("INSERT INTO Students (StuPID, StuPassword, StuTimeCode) VALUES (?, ?, ?)");
$stmt_i_stu->bind_param("ssi", $StuPID, $StuPassword, $time_code);
$x_stu_list = $x->student_list;
foreach ($x_stu_list->student as $xs)
{
$StuPID = $xs['id'];
if ($StuPID!='')
{
$StuPassword = $xs['md5password'];
$stmt_u_stu->execute();
if (EJDB::$Conn->affected_rows==0)
$stmt_i_stu->execute();
}
}

$stmt_u_stu->close();
$stmt_i_stu->close();
// Пометим на удаление записи учащихся, которые не были затронуты при парсинге головного XML-файла,
// т.к. это означает, что эти учащиеся больше не в списке школы.

$stmt_u_stu = EJDB::$Conn->prepare("UPDATE Students SET StuDeleted=1 WHERE StuTimeCode<>?");
$stmt_u_stu->bind_param("i", $time_code);
$stmt_u_stu->execute();
$stmt_u_stu->close();
$x = null;

if ($handle = opendir("./"))
{
while (false !== ($file = readdir($handle)))
{
if (strtolower(substr($file, strlen($file)-4, 4))==".xml")
{
$x = simplexml_load_file(".$x_dir/$file");

$stmt_d = EJDB::$Conn->prepare("DELETE FROM StudentsData WHERE DatStudentId=? AND DatParam1=?");
$stmt_d->bind_param("is", $DatStudentId, $DatParam1);
$stmt_d_book = EJDB::$Conn->prepare("DELETE FROM StudentsData WHERE DatStudentId=? AND DatParam1=? AND DatParam2=? AND DatParam3=?");
$stmt_d_book->bind_param("isss", $DatStudentId, $DatParam1, $DatParam2, $DatParam3);

$stmt_i = EJDB::$Conn->prepare("INSERT INTO StudentsData (DatStudentId, DatParam1, DatData) VALUES (?, ?, ?)");
$stmt_i->bind_param("iss", $DatStudentId, $DatParam1, $DatData);
$stmt_i_book = EJDB::$Conn->prepare("INSERT INTO StudentsData (DatStudentId, DatParam1, DatParam2, DatParam3, DatData) VALUES (?, ?, ?, ?, ?)");
$stmt_i_book->bind_param("issss", $DatStudentId, $DatParam1, $DatParam2, $DatParam3, $DatData);

foreach ($x->student as $xs)
{
$StuPID = $xs['id'];
$stmt_s_stu = EJDB::$Conn->prepare("SELECT StuId FROM Students WHERE StuPID=?");
$stmt_s_stu->bind_param("s", $StuPID);
$stmt_s_stu->bind_result($StuId);

$res = $stmt_s_stu->execute();
if ($stmt_s_stu->fetch())
{
$DatStudentId = $StuId;
$stmt_s_stu->close();
foreach ($xs->data as $d)
{
$DatParam1 = $d['type'];
$DatData = $s1 . $d->asXML() . $s2;
if ($d['type']=='book')
{
$DatParam2 = $d['begin_date'];
$DatParam3 = $d['end_date'];
$res = $stmt_d_book->execute();
$res = $stmt_i_book->execute();
}
else
{
$res = $stmt_d->execute();
$res = $stmt_i->execute();
}
}
}
}

$stmt_d->close();
$stmt_d_book->close();
$stmt_i->close();
$stmt_i_book->close();
$x = null;
}
}
}

closedir($handle);
EJDB::disconnect_db();
}
}

else
{
$err_msg = "Archive extraction failed, code: $res";
}

echo '<html>';
echo '<body>';
if ($err_msg)
{
echo "<p>$err_msg</p>";
}
else
{
echo "<p>XML-files extracted successfully</p>";
}
echo '</body>';
echo '</html>';

?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса