Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Выполнить скрипт, как из браузера...


Автор: Borland_Delphi_6 23.6.2004, 23:29
Проблема в следующем: есть два скрипта, оба юзают mysql, один после работы записывает данные в текстовый файл. Один скрипт основной (движок сайта), второй дополнительный. При попытке инклюдить в основной скрипт дополнительный, чтобы он выполнился и обновил данные в текстовом файле, выдается какая-то ошибка с базой. Вопрос: можно ли выполнить дополнительный скрипт вместе с основным так, чтобы они не видели друг друга, т.е. как будто дополнительный скрипт запускается из браузера. sad.gif

Автор: Nobody 24.6.2004, 00:45
UNIX:
fetch "http://your.site.com/path/to/script2.php"

Windows:
1)установить cygwin
2)fetch "http://your.site.com/path/to/script2.php"

Автор: Borland_Delphi_6 24.6.2004, 01:05
Цитата
установить cygwin

Пардон, что это такое и где его взять?

Автор: yUAC 24.6.2004, 01:14
Тут Вам такое наговорят... Используйте функцию virtual ( http://www.php.net/virtual )

Автор: Borland_Delphi_6 24.6.2004, 01:17
yUAC
Хм, вроде похоже на то, что нужно. Если заработает, обещаю плюсик! wink.gif Пока только спасибо rolleyes.gif

Автор: IZ@TOP 24.6.2004, 09:11
А не проще через фрейм загрузить его?
Цитата
<iframe border=0 width=0 height=0 frameborder=0 src="/two.script.php"></iframe>

Автор: MuToGeN 24.6.2004, 09:17
Нормальные люди IFRAME отключают.

Цитата
выдается какая-то ошибка с базой
А по-моему, проще разобраться с этой самой "какой-то ошибкой" и пользовать include()

Автор: Sufius 24.6.2004, 10:38
2 MuToGeN
А зачем они его отключают-то? =)

Автор: MuToGeN 24.6.2004, 10:54
Цитата
А зачем они его отключают-то? =)
Из-за дыр + часто реклама привинчивается к странице через iframe. Если заплаток к ослу / убивалок баннеров под рукой нет или качать ломает, то это самый быстрый вариант.

Автор: Borland_Delphi_6 24.6.2004, 11:50
IZ@TOP
IFRAME не покатит, я думал над этим. Тут такое дело: этот движок очень не любит внешних php скриптов, особенно тех, которые с другой базой mysql работают. Поэтому когда я сделал для него простенький плагин, юзающий virtual() он работать отказался sad.gif Почему так, нифига не понимаю. А так вообще-то, функция вроде бы подходит...

Автор: Юрик 24.6.2004, 11:59
Пиши что за ошибка и версия PHP

Автор: Borland_Delphi_6 24.6.2004, 12:10
Ошибка не из-за скрипта, ошибка из-за движка сайта. Сам скрипт рабочий.

Автор: Юрик 24.6.2004, 12:12
Твой движок сайта - тоже скрипт, не правда ли? Поэтому если хочешь чтобы тебе помогли - дай ошибку

Автор: MuToGeN 24.6.2004, 12:57
2Юрик
М
 
Хватит флудить

Автор: Borland_Delphi_6 24.6.2004, 17:29
Юрик
Ну вот, пожалуйста:
MySQL error : Unknown column 'news_expire' in 'where clause'
Наверное многое прояснилось, да? sad.gif

Автор: Secandr 24.6.2004, 17:37
Borland_Delphi_6
Есть предложение:
закрывать соединение в основном скрипте include, инклудить второй скрипт, после этого заного конектится к серверу.

Автор: Ignat 24.6.2004, 17:42
Secandr, а зачем? Просто использовать один коннект.

Автор: Secandr 24.6.2004, 18:00
Ignat
по крайней мере стоит попробовать. У меня просто предчуствие, объяснить логически не могу biggrin.gif У программистов тоже бывает интуиция.

Автор: Ignat 24.6.2004, 18:07
Borland_Delphi_6, покажи запрос на котором эта ошибка выскакивает, может там баг?
Код хотелось бы посмотреть.

оффтоп: Secandr, интуиция программиста называется ж...пное чувство smile.gif

Автор: Borland_Delphi_6 24.6.2004, 19:18
Ignat
нет, багов нет, это точно. Код? Хрен его знает, где именно, там штук 20 файлов и в каждом штук по 20 запросов... Проблема в том, что когда инлюдишь второй скрипт, первый перестает понимать, как коннектиться к базе...
Secandr
То же самое. Я не смогу найти то место, где надо коннект закрывать, а если и смогу, то их очень много получится.

Автор: MuToGeN 24.6.2004, 19:20
Цитата
Ну вот, пожалуйста:
MySQL error : Unknown column 'news_expire' in 'where clause'
Наверное многое прояснилось, да?
Прояснилось то, что в WHERE ты указал несуществующее поле таблицы MySQL news_expire

Добавлено @ 19:20
Короче, лучше ищи, где у тебя глючный запрос.

Автор: Borland_Delphi_6 24.6.2004, 22:09
Но проблема-то в том, что в бд все таблицы в порядке... Вот мне надо просто вызвать из одного скрипта другой, чтобы первый не подозревал о существовании второго

Автор: Secandr 24.6.2004, 22:25
Borland_Delphi_6
ты вызываешь скрипт:
Код
include('second.php');

Вот тут и закрываешь соединение с бд:[code]//закрываешь соединение
include('second.php');
//открываешь заного

Автор: Borland_Delphi_6 24.6.2004, 23:37
Secandr
Можно конечно попробовать, но неужели нельзя сделать так, как я хочу?

Автор: MuToGeN 25.6.2004, 00:21
Borland_Delphi_6
Если все это из-за MySQLной ошибки, то такое решение - как гильотина от перхоти. Разбираться надо с MySQLем. Если выдает ошибку, значит что-то где-то не так.

Цитата
]//закрываешь соединение
include('second.php');
//открываешь заного
Тогда будет ругаться на запрос без коннекта.

Автор: Borland_Delphi_6 25.6.2004, 01:19
Цитата
Тогда будет ругаться на запрос без коннекта.

Второй скрипт устанавливает свой коннект к своей базе.
Цитата
как гильотина от перхоти

Проще мне так. Просто второй скрипт записывает инфу в текстовый файл, а уж он инклюдится без проблемю

Автор: Ignat 25.6.2004, 10:54
Подожди, у тебя используются две базы? Тогда разберись с идентификаторами ресурсов.
Просто один скрипт использует идентификатор дроугой базы и ессесно не находит колонку.

Автор: MuToGeN 25.6.2004, 11:53
ЗЫ Это то, что возвращает mysql_connect() и что является вторым параметром для mysql_query()

Автор: Borland_Delphi_6 25.6.2004, 13:17
блин, как все сложно... Конечно, правильно было бы сидеть и ковыряться с базой, но мне этого не хочется, если честно и тема по сути дела не о том... Мне надо всего лишь, чтобы один скрипт запускал второй и ради этого я должен пересмотреть 20-30 файлов? Сомнительное удовольствие... Спасибо за советы, но может быть у кого-нибудь есть идеи по сабжу?

Автор: Ignat 25.6.2004, 13:28
Ну если, совсем по сабжу, не используя iframe - используй javascript:window.open, хотя лучше разобраться с мускулем.

Автор: yUAC 25.6.2004, 14:24
Запустите второй скрипт отдельно. Посмотрите, что он выдает. Если все нормально, значит его можно легко с помощью virtual заинклюдить. Если нет, значит надо разбираться со вторым скриптом. Других путей нет.

Автор: Borland_Delphi_6 25.6.2004, 15:10
нет, мне всякие клиентские скрипты не нужны. Я ж говорю, нужно серверу запрос послать, но только так, чтобы он думал, что запрос из браузера, а не из скрипта... Но хотя я попробую с базами похимичить...
Добавлено @ 15:11
yUAC
Второй скрипт прекрасно работает. дело явно в первом, он не любит, когда в плагины внешние скрипты суют...

Автор: yUAC 25.6.2004, 21:50
Хм. Приведите пожалуйста тот код, которым Вы запрашиваете страницу. Я так понимаю, это должно быть что-то вроде virtual('/something/script.php');

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)