php - есть ли какой-нибудь способ получить доступ к свойствам уже созданного класса из другого скрипта, не восстанавливая его? - PullRequest
0 голосов
/ 12 октября 2009

У меня есть страница main.html, которая является клиентским приложением для конкретного сервера. Main.php - это окно с тремя фреймами.

main.html

<frameset frameborder=no border=0>
 <frame name='top1' src='top1.php' frameborder=no scrolling=no>
        <frame name='top2' src='top2.php' frameborder=no scrolling=no>
 <frame name='firstpage' src='firstpage.php' frameborder=no scrolling=auto>
</frameset>

firstpage.php

<?php 
....
....
require_once("connection.php");
// connection.php is a class which opens a socket and establishes with another server.
set_time_limit(0);
ignore_user_abort();

function parse($line) {
//parses $line returns $a which contains some data etc
....
return $a;
}

$connect= new Connection();
.....
$line=$connect->socket_read(1028);
.....
while ($i<200) {
$GLOBALS[userdata][$i]=parse($line);
.......
}
?>

firstpage.php - это большой скрипт, и я урезал большую часть firstpage.php из-за разборчивости. connect.php и firstpage.php работают именно так, как я хочу.

Мне нужно иметь $ GLOBALS [userdata] в top1.php и top2 для дальнейшей обработки. В любом случае я могу получить доступ к $ GLOBALS [userdata] БЕЗ создания экземпляра connect.php снова? (Обработка данных, которую я хочу сделать в top1.php и top2.php, НЕ МОЖЕТ выполняться в firstpage.php по причинам, которые я не могу здесь обсудить.) Я не могу восстановить экземпляр connect.php, так как данные с сервера уже поступили в firstpage.php не обижаться на мой сервер.

Я понял, что поскольку firstpage.php работает бесконечно, $ GLOBALS не пишется. Попробовал session_write_close сразу после $ GLOBALS [userdata] [$ i] = parse ($ line); в то время как цикл. Но это не помогло.

Я также обнаружил, что SESSIONID в top1.php, top2.php и firstpage.php одинаков.

Кто-нибудь может указать мне правильное направление?

Спасибо !!

Ответы [ 2 ]

5 голосов
/ 12 октября 2009

Страницы обрабатываются как полностью отдельные запросы, поэтому вы не можете обмениваться данными между ними в традиционном смысле.

Теоретически можно использовать сеанс для этого, поскольку все страницы будут загружены как часть одного сеанса. Однако порядок их загрузки не совсем предсказуем, поэтому нельзя быть уверенным, что одна страница завершилась при загрузке другой. Так что на практике это тоже не сработает.

Еще одна причина, по которой кадры вызывают проблемы.

0 голосов
/ 13 октября 2009

Я думаю, что кадры не проблема. У меня есть скрипт, который работает бесконечно.

Поскольку я создал экземпляр класса и сценарий все еще выполняется, я предполагаю, что свойства / данные-члены класса должны быть доступны где-то. Есть ли способ получить доступ к этим элементам / свойствам данных уже созданного класса?

...