[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите, запустить php скрипт.
pansim
Добрый день! Помогите решить проблему. Есть сайт на некотором хостинге, туда копируются файлы в виде архива 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>';

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.