Проблема собственно вот в чем ставлю скрипт на cron выдает ошибку
Цитата:
Warning: Invalid argument supplied for foreach() in .../engine/cron_autoseo.php on line 45
|
PHP код:
@session_start ();
define ( 'DATALIFEENGINE', true );
define ( 'ROOT_DIR', '..' );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );
@error_reporting ( E_ALL ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_NOTICE );
require ENGINE_DIR . '/data/config.php';
if ($config['http_home_url'] == ""){
$config['http_home_url'] = explode ( "engine/cron_autoseo.php", $_SERVER['PHP_SELF'] );
$config['http_home_url'] = reset ( $config['http_home_url'] );
$config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];
}
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
$db->query("SELECT key_id FROM ".PREFIX."_autoseo_block_link");
while($row = $db->get_row()){
$lnkId[$row['key_id']] = $row['key_id'];
}
$db->query("SELECT key_id FROM ".PREFIX."_autoseo_contekst");
while($row = $db->get_row()){
$lnkId[$row['key_id']] = $row['key_id'];
}
foreach($lnkId as $name){
if(!$where) $where = " WHERE (id != '{$name}' AND url_page != '')"; else $where .= " AND (id != '{$name}' AND url_page != '')";
}
//echo $where;
$db->query("SELECT * FROM ".PREFIX."_autoseo_keywords {$where} LIMIT 0, 1");
$row = $db->get_row();
if($row['id']) doSetLinks($row['keyword'], $row['id'], $row['url_page']);
$db->free();
function doSetLinks($keyword, $keyId, $keyURLPage){
global $config;
global $db;
$blockLinkCount = 0;
$contekstLinkCount = 0;
//------------ Установка ссылок в текстах -------------------------
$db->query("SELECT id FROM ".PREFIX."_post WHERE short_story LIKE '%{$keyword}%' OR full_story LIKE '%{$keyword}%'");
while($row = $db->get_row()){
if(!$links) $links = "('{$row['id']}', NULL, '{$keyId}')"; else $links .= ", ('{$row['id']}', NULL, '{$keyId}')";
$contekstLinkCount++;
}
$db->free();
$db->query("SELECT id FROM ".PREFIX."_static WHERE template LIKE '%{$keyword}%'");
while($row = $db->get_row()){
if(!$links) $links = "(NULL, '{$row['id']}', '{$keyId}')"; else $links .= ", (NULL, '{$row['id']}', '{$keyId}')";
}
$db->free();
if($links) $db->query("INSERT IGNORE INTO ".PREFIX."_autoseo_contekst (post_id, static_id, key_id) VALUES ".$links);
//------------ Установка ссылок в блоках -----------------------------------------
unset($links);
$text = iconv('WINDOWS-1251','UTF-8', "http://yandex.ru/yandsearch?text={$keyword}&site={$config['http_home_url']}&mime=all");
$yandex = file_get_contents($text);
preg_match_all('|<a tabindex="([0-9]*)" onmousedown=(.*)href="(.*)" target="_blank">|Uis', $yandex, $elements);
unset($links);
$blockCount = 0;
if(count($elements[3])){
foreach($elements[3] as $name => $value){
if($value != $elements[3][0]){
if(!$links) $links = "('{$keyId}', '{$value}')"; else $links .= ", ('{$keyId}', '{$value}')";
$blockLinkCount = $name;
}
}
}
if($links) $db->query("INSERT IGNORE INTO ".PREFIX."_autoseo_block_link (key_id, url_page) VALUES ".$links);
if($blockLinkCount == 0 and $contekstLinkCount == 0){
// $db->query("DELETE FROM ".PREFIX."_autoseo_keywords WHERE id='{$keyId}'");
echo "К ключу <b>{$keyword}</b> не удалось подобрать релевантные странички для размещения ссылок.";
}else{
echo "Ключ <b>{$keyword}</b> обработан.<br>Было размещено <b>{$contekstLinkCount}</b> контекстных ссылок и <b>{$blockLinkCount}</b> ссылок в блоках";
}
}
?>