Не работает скрипт

Статус
В этой теме нельзя размещать новые ответы.

Aikon

Постоялец
Регистрация
16 Фев 2015
Сообщения
76
Реакции
33
Помогите, пожалуйста. Не могу понять, почему не работает скрипт. Вроде все правильно написал а ничего не происходит. Сам скрипт должен удалять статьи дата публикации которых окончена. В базе данных WHERE publish_down <= NOW() AND publish_down != '0000-00-00 00:00:00' работает и показывает нужные. Но почему-то не удаляет. Ставил задачу на крон хостинга. Ошибок не видает но и не удаляет( Сайт на Joomla
PHP:
<?php

const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
    require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', dirname(__DIR__));
    require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load Library language
$lang = JFactory::getLanguage();

// Try the files_joomla file in the current language (without allowing the loading of the file in the default language)
$lang->load('files_joomla.sys', JPATH_SITE, null, false, false)
// Fallback to the files_joomla file in the default language
|| $lang->load('files_joomla.sys', JPATH_SITE, null, true);


class DeletefilesCli extends JApplicationCli
{

    public function doExecute()
    {
        // Import the dependencies
        jimport('joomla.filesystem.file');
        jimport('joomla.filesystem.folder');

        // We need the update script
        JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php');

        // Instantiate the class
        $class = new JoomlaInstallerScript;

        // Run the delete method
        $class->deleteUnexistingFiles();
    }
}


JApplicationCli::getInstance('DeletefilesCli')->execute();


        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query = "DELETE FROM  k7c1b_k2_items WHERE publish_down <= NOW() AND publish_down != '0000-00-00 00:00:00'";
        $db->setQuery($query);
        $result = $db->execute();



?>
 
Как то так попробуйте
Код:
$conditions = array(
    $db->quoteName('publish_down') . ' <= NOW()',
    $db->quoteName('publish_down') . ' != "0000-00-00 00:00:00"'
);

$query->delete($db->quoteName('#__k2_items'));
$query->where($conditions);

$db->setQuery($query);
 
PHP:
$db = JFactory::getDBO();
Вот после этого вставьте var_dump($db);
И тогда сразу будет видно, передается ли объект или нет (скорее всего нет).
Вообще для такого простого действия я просто бы подхватил данные и отправил запрос, не трогая инициализацию разных объектов.
PHP:
$db = new mysqli('server', 'username', 'password', 'db');
 mysqli_query($db, "DELETE FROM k7c1b_k2_items WHERE publish_down <= NOW() AND publish_down != '0000-00-00 00:00:00'");
 
Как то так попробуйте
Код:
$conditions = array(
    $db->quoteName('publish_down') . ' <= NOW()',
    $db->quoteName('publish_down') . ' != "0000-00-00 00:00:00"'
);

$query->delete($db->quoteName('#__k2_items'));
$query->where($conditions);

$db->setQuery($query);
не помогло

PHP:
$db = JFactory::getDBO();
Вот после этого вставьте var_dump($db);
И тогда сразу будет видно, передается ли объект или нет (скорее всего нет).
Вообще для такого простого действия я просто бы подхватил данные и отправил запрос, не трогая инициализацию разных объектов.
PHP:
$db = new mysqli('server', 'username', 'password', 'db');
mysqli_query($db, "DELETE FROM k7c1b_k2_items WHERE publish_down <= NOW() AND publish_down != '0000-00-00 00:00:00'");
также не работает. Вот такое письмо видает крон

Resolving site.com... 2a06:xxxx:0:xxxx::1, 185.xxx.45.xx
Connecting to Для просмотра ссылки Войди или Зарегистрируйся|2a06:xxxx:0:
xxxx::1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [text/html]
Saving to: ‘STDOUT’

0K 0.00 =0s

2017-05-19 21:22:01 (0.00 B/s) - written to stdout [0/0]
 
Последнее редактирование модератором:
также не работает
А Вы точно вместо 'server', 'username', 'password', 'db' ввели данные подключения к своей базе?
Их надо было взять из конфига Джумлы
Из мануала:
Файл configuration.php располагается в корневом каталоге с установленной Joomla.
Да и правильное ли задание в кроне я проверил бы. Посмотреть в логах сайта, работает ли.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху