Запустите PHP на сервере и покажите только результаты - PullRequest
0 голосов
/ 06 марта 2012

Я искал во многих местах и ​​не нашел решения для моей проблемы должным образом ... У меня есть PHP-код, который занимает около 1 минуты для извлечения информации, потому что он извлекает URL в php Open Graph,поэтому он должен открыть много сайтов, найти метаданные (например, название, изображения, описания) и повторить их для меня ... Итак, вся система работает нормально, но каждый раз, когда пользователь заходит на сайт, phpкод должен снова выполнить всю работу, извлекая метаданные и прочее ...

Мне нужно создать систему, которая запускает PHP на фоновом сервере и хранит информацию, поэтому, когда пользователь входит на сайт,вся работа была бы уже сделана, показывая только результаты ... любая идея?

Я сделал этот тест:

После 1 минуты ожидания и с открытой страницей, показывающей результаты,Я вошел в исходный код, скопировал весь контент и создал новую страницу .html (скопировал и вставил сгенерированный код), и, конечно, все было преобразовано в простой HTMLкод, показывающий результаты php ... И все загружается за секунду, потому что весь процесс Open Graph уже был сделан .. Это то, что мне нужно, но автоматически ..

(английский не мой основной язык,итак, вы знаете):)

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

Добавить результаты в базу данных или кэшированный файл. Иметь сценарий cron, который запускает сценарий, который занимает много времени, но изменяет сценарий, чтобы сохранить вывод в файл или базу данных. Затем ваш пользовательский скрипт просто извлекает содержимое файла / базы данных.

0 голосов
/ 06 марта 2012

Вы когда-нибудь использовали memcached ??Facebook и все большие сайты используют это, и это довольно легко реализовать.

http://memcached.org/

Удачи с этим!

0 голосов
/ 06 марта 2012
There are many options to do this.  Some depend on how you want users to get the information.

 1. If you're on Windows, you could try using:

    $WShell = new COM("WScript.Shell");
    $path = ($_SERVER['DOCUMENT_ROOT']."/long_task.php");
    $exec = $WShell->Run("php.exe -f $path", 0, false);


Have the long_task.php update the database or something to let you know you've completed the task and that the user can retrieve the updates.

 2. Load the data into an iframe


    <!-- Send the data request to the iframe -->
    <form action="long_task.php" target="ifr">
    ...
    </form>

    <!-- put iframe somewhere on your main page -->
    <iframe name="ifr" id="ifr" >
    </iframe>

 3. Also, you may wish to consider using javascript instead.  A jQuery asynchronous request to the long_task.php file can be created using something like:

    <!-- HTML code -->
    <a href="post_data()">Button</a>

    <!-- jquery code -->
       function post_data() {
           var dataString = $('#data_to_send1, #data_to_send2).serialize();
           $.post(url, dataString, function(data) { 
                       //callback details
               //use js-jquery to display your data here
           });
       }
...