Подскажите можно ли такое реализовать, Если да, то как? Сайт работает некоторой БД на MS SQL. Много форм строится путем отрисовки стандартных одинаковых запросов. Так вот можно ли при старте первой страницы эти запросы выполнить и передать в какие-нибудь переменные (массивы скажем), а потом работать с этими массивами, а не делать каждый раз запросы к БД.
А как это делается? Как запускается при старте первой страницы выгрузка в эти переменные и как они потом передаются между формами/файлами.
Delphin911, без обид, но ты же программист. давай подумай какой должен быть алгоритм у решения данной задачи. вот просто как ты себе её представляешь.
Да в том то и дело, что не программист. Я сисадмин. PowerShell, VBScript. Работа с AD и файловыми ресурсами. То что я когда-то давно написал сайтик себе в помощь для хранения данных об этих ресурсах, не говорит о том, что я программист. Но именно этот сайтик дает мне сейчас время разбираться с новыми вещами. Скажем при работе с asp страничками я прикреплял файлик, в котором были переменные, которые работали на всех страничках, к которым прикреплен этот файл. Как же это работает в PHP я пока не знаю.
ты стал программистом когда написал сайтик ибо это программа. ты стал программистом когда стал системным администратором - те конфигурации которые ты создаешь для конечных продуктов влияют на работу этих продуктов так же как скрипт выполняется пхп-машиной или любым другим интерпретатором. ты пользуешься пш и вбс а это тоже программирование в достаточно явном смысле этого термина.
Но принцип то работы разный. Вот я говорю например, что в asp страничках я прикрепляю файлик в котором все переменные, функции, процедуры и т.п. И они едины для всех страниц сайта, куда я пропишу этот файлик. В PHP как такое сделать я не знаю. Поэтому и спрашиваю.
результат работы запроса у вс наверное массив. этот массив можно например сериализовать serialize() и сохранить в файл file_put_contents(). при повторных вызовах формы, проверять существование этого файл file_exists() и если он есть то считывать из него file_get_contents() и превращать в массив данные unserialize(). еще можно проверять время создания файла и сравнивать его с текущим.и реализовтаь время жизни кеша. например час. чтоб потом он абновлялся.
или сразу экспортировать как массив пхп чтоб потом когда просто подключаешь файл - пхп мог кэшировать опкод.
можно и так. но в данном случае, нужно хранить данные. опкода там будет - кот наплакал. хранить строкой более универсально, ибо можно хранить хоть в файле, хоть в бд, хоть в мемкеше, хоть в любом кей-валуе хранилище. дело автора.
Народ! А почему может не работать конструкция Код (PHP): <?php include $_SERVER['DOCUMENT_ROOT']."/Action.php"; ?> С начала я делал проще, т.к. файл лежит в одной директории с файлами сайта. Код (PHP): <?php include "Action.php"; ?> И так и так не работает. Обработчик php файлов включен на iis 8.5 сервере. Но вместо запуска файла просто на страничке печатается его содержимое. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
В настройках iis прописано в HandlerMappings *.php и *.html обрабатывать php-cgi.exe. К тому же другая страничка, которая открывается на этом сайте обрабатывает конструкцию типа <?php ?>. Стартовая страничка у меня html, но я ее и в PHP переделывал, все равно не обрабатывается. P.S.Соответственно т.к. у меня iis на винде никаких файликов .htaccess нет. P.P.S. Для проверки в конце странички стартовой вставил Код (PHP): <?php print "<a>ttt</a>"; ?> Отдично отрабатывает. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
Ну зачем чего-то придумывать, когда уже есть iis. Инструкция http://php.ru/manual/install.windows.iis7.html вот эта например. Не по ней конкретно настраивал, но все что читал, все одинаковые. Да и работает php и на этой странице и на других.
Да это я понял. Но переходить на Apache. Да и кто же мне даст юниксовый сервер под это? Не разворачивать же его на какой-нибудь продуктивной системе. Вроде Apache на винде можно развернуть. Но ИМХО это еще большее извращение. Добавлено спустя 35 минут 13 секунд: Что-то мне кажется, что конструкция с include не совсем то что надо. Собственно что имею я. Код (PHP): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="Design/IT_OPER.CSS"> <link rel="stylesheet" type="text/css" href="Design/Menu.CSS"> <title></title> <script type="text/javascript"> function MClick(MNumer) { switch (MNumer) { case 21: document.getElementById("frData").src = 'NR_NA.html'; break; case 34: document.getElementById("frData").src = 'NA_CorpCentr.php'; break; } } $(function() { if ($.browser.msie && $.browser.version.substr(0,1)<7) { $('li').has('ul').mouseover(function(){ $(this).children('ul').show(); }).mouseout(function(){ $(this).children('ul').hide(); }) } }); </script> </head> <body> <ul id="menu"> <li> <a>Учетные записи</a> <ul> <li><a onclick="MClick()">УЗ1</a></li> <li><a onclick="MClick()">УЗ1</a></li> </ul> </li> <li> <a>Файловые ресурсы</a> <ul> <li><a onclick="MClick(21)">ФР1</a></li> <li><a onclick="MClick()">ФР2</a></li> </ul> </li> <li> <a>Запросы</a> <ul> <li><a onclick="MClick()">З1</a></li> <li><a onclick="MClick()">З2</a></li> </ul> </li> </ul> <div id="dFrame" style="height:100%"> <iframe name="frData" id="frData" width="100%" height="100%" scrolling="auto" frameborder="0" style="border-width:5px;border-color:#00F;"></iframe> </div> <script type="text/javascript"> var H = document.documentElement.clientHeight; var dFrame = document.getElementById("dFrame"); dFrame.style.height = H - 75 + 'px'; </script> </body> </html> Вот такая стартовая страничка с менюшкой и iframe, в который в зависимости от нажатия пункта меню будет класца определенная страничка. И вот я навая PHP страничку, которая должна выполниться при старте той странички стартовой и прописать в файлик массивы с полученными из запросов к MS SQL базе данными. Код (PHP): <?php error_reporting( E_ALL ); $server = "10.X.X.X,1433\MSSQLSERVER"; $connectionInfo = array( "Database"=>"Users"); // Connect to MSSQL $conn = sqlsrv_connect($server, $connectionInfo); if (!$conn) { echo "Соединение не удалось, ошибка:"; die( print_r( sqlsrv_errors(), true)); } else { echo ("OK"); $query = "SELECT CDate FROM QQQ order by Sort DESC"; $res = sqlsrv_query($conn, $query); $arr_dates_res = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); sqlsrv_free_stmt($res); $query = "SELECT DISTINCT Server FROM QQQ where QQQQQQQQ order by Server"; $res = sqlsrv_query($conn, $query); $arr_servers = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); sqlsrv_free_stmt($res); $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ"; $res = sqlsrv_query($conn, $query); $arr_vols_0 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); sqlsrv_free_stmt($res); $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ"; $res = sqlsrv_query($conn, $query); $arr_vols_1 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); sqlsrv_free_stmt($res); $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ"; $res = sqlsrv_query($conn, $query); $arr_vols_2 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); sqlsrv_free_stmt($res); $dates_res = serialize($arr_dates_res); file_put_contents('C:\temp\variabls.txt', $dates_res); $servers = serialize($arr_servers); file_put_contents('C:\temp\variabls.txt', $servers); $vols_0 = serialize($arr_vols_0); file_put_contents('C:\temp\variabls.txt', $vols_0); $vols_1 = serialize($arr_vols_1); file_put_contents('C:\temp\variabls.txt', $vols_1); $vols_2 = serialize($arr_vols_2); file_put_contents('C:\temp\variabls.txt', $vols_2); } ?> IP-шник и SQL запросы я потер, да и не в них суть они работают. Ну и в общем идея в том, чтобы птом эти массивы из файлика достать и использовать без обращения к SQL. Так вот когда я вставляю в первый файлик стартовый код Код (PHP): <?php $Path = "Action.php"; include($Path); ?> То вместо выполнения действий с PHP файла просто выводится его текст перед менюшкой. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
Народ, а возможно надо эти процедуры выполнить вставив код в первую страницу, а в дальнейшем так же вытаскивать массивы из файла? Да и еще народ, может в php скрипте у меня ошибки? Гляньте натренированным взглядом. Например процедуру Код (PHP): $arr_vols_1 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); я практически придумал. Есть типа mysql_fetch_array, а для sqlsrv я не нашел в инете примеров.
Спасибо. Тоже уже нашел неплохую страничку с функциями PHP. http://htmlweb.ru/php/function/ Я правильно теперь понял, что нельзя взять массив и присвоить ему результат SQL запроса (как я наивно сначала подумал). Надо построчно вносить в массив результ запроса. Так?