Статьи

Как использовать MongoDB из PHP на веб-сайтах Windows Azure

 

Ранее сегодня MongoLab объявил о доступности MongoDB как службы в Windows Azure: MongoLab в Windows Azure . С моей точки зрения, это здорово, так как теперь позволяет легко использовать 3 из моих любимых технологий: Windows Azure Web Sites, PHP и MongoDB. Поэтому я не теряю времени на игры с ними: этот пост покажет вам, как создать базу данных MongoDB и получить к ней доступ из PHP на веб-сайтах Windows Azure.

Примечание : я настоятельно рекомендую вам прочитать объявление MongoLab, прежде чем следовать этому руководству, так как оно содержит информацию о бета-статусе предложения MongoLab.

Я предполагаю, что у вас есть учетная запись Windows Azure. Если вы этого не сделаете, вы можете подписаться на бесплатную пробную версию .

Создать базу данных MongoDB

Чтобы создать базу данных MongoDB …

1. Войдите на портал Windows Azure , нажмите + NEW внизу страницы и выберите STORE .

Иди в магазин

2. Прокрутите список доступных надстроек, выберите MongoLab и щелкните стрелку в нижней части экрана.

SelectMongoLab

3. Укажите имя базы данных MongoDB и выберите регион для развертывания. Нажмите стрелку вправо в нижней части экрана.

Примечание . Указанное здесь имя будет именем вашей базы данных, а в бесплатном предложении (которое доступно сейчас) вы получите только одну базу данных.

ProvideName

4. Подтвердите «покупку» (это бесплатно!).

покупка

5. После того, как ваша база данных будет создана, вы сможете увидеть ее на портале в разделе ADD-ONS . Нажмите на имя базы данных, чтобы перейти к ее панели.

portalshot

6. Изучите ссылки на панели инструментов, но чтобы получить информацию о соединении, перейдите к следующему шагу.

щиток приборов

7. Нажмите INFOECTION INFO, чтобы получить строку подключения MongoDB. Запишите строку подключения, так как она понадобится вам позже. (Также обратите внимание, что нажав MANAGE , вы попадете в веб-интерфейс MongoLab для управления вашей базой данных.)

connectionInfo

Вот и все. Ваша база данных MongoDB готова к использованию.

Создайте веб-сайт и включите php_mongo.dll

После того, как вы настроили базу данных MongoDB, вы можете подключиться к ней из любой точки мира, используя строку подключения, указанную в разделе выше. Однако если вы хотите подключиться к нему с сайта в веб-сайтах Windows Azure, вам потребуется немного поработать, чтобы включить расширение MongoDB:

  1. Загрузите расширение php_mongo.dll здесь: https://github.com/mongodb/mongo-php-driver/downloads . Выберите загрузку для PHP 5.3, Windows, VC9. После того, как вы загрузили архив, выберите подходящую версию без использования потоков из доступных файлов (например, php_mongo-1.2.12-5.3-vc9-nts.dll).
  2. Следуйте инструкциям в этом посте, чтобы включить расширение MongoDB на веб-сайтах Windows Azure: Использование пользовательских расширений PHP на веб-сайтах Windows Azure . (Примечание. В этом посте предполагается, что вы переименовали файл расширения в php_mongo.dll.)

Если вы новичок в работе с веб-сайтами Windows Azure, вам необходимо выполнить шаги, описанные в одной из этих статей, для создания веб-сайта, прежде чем включать расширение MongoDB:

Создайте и опубликуйте ваше приложение

Как я упоминал ранее, я предполагаю, что вы немного знакомы с MongoDB и PHP. Если вы этого не сделаете, вот хорошее место для начала: http://php.net/manual/en/book.mongo.php . Просто для удовольствия, вот простой пример приложения (оно регистрирует людей на воображаемое событие), которое использует базу данных MongoDB. Вы можете запустить его локально или опубликовать на веб-сайтах Windows Azure. Вам нужно будет заменить YOUR_CONNECTION_STRING_HERE на строку подключения, которую вы указали при создании базы данных, и вам нужно заменить YOUR_DB_NAME_HERE на имя вашей базы данных.

<html>

<head>

<Title>Registration Form</Title>

<style type="text/css">

    body { background-color: #fff; border-top: solid 10px #000;

        color: #333; font-size: .85em; margin: 20px; padding: 20px;

        font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;

    }

    h1, h2, h3,{ color: #000; margin-bottom: 0; padding-bottom: 0; }

    h1 { font-size: 2em; }

    h2 { font-size: 1.75em; }

    h3 { font-size: 1.2em; }

    table { margin-top: 0.75em; }

    th { font-size: 1.2em; text-align: left; border: none; padding-left: 0; }

    td { padding: 0.25em 2em 0.25em 0em; border: 0 none; }

</style>

</head>

<body>

<h1>Register here!</h1>

<p>Fill in your name and email address, then click <strong>Submit</strong> to register.</p>

<form method="post" action="index.php" enctype="multipart/form-data" >

      Name  <input type="text" name="name" id="name"/></br>

      Email <input type="text" name="email" id="email"/></br>

      <input type="submit" name="submit" value="Submit" />

</form>

<?php

ini_set("display_errors", "On");

 

try{

    $db = new Mongo("YOUR_CONNECTION_STRING_HERE");

    $registrations = $db->selectCollection('YOUR_DB_NAME_HERE', 'registrations');

} catch (Exception $e){

    echo 'Caught exception: ',  $e->getMessage(), "<br />";

}

 

if(!empty($_POST)) {

    try{

        $registration = array("name" => $_POST['name'], "email" => $_POST['email'], "date" => date("Y-m-d"));

        $registrations->insert($registration);

        echo "<h3>Your're registered!</h3>";

    } catch (Exception $e){

        echo 'Caught exception: ',  $e->getMessage(), "<br />";

    }

}        

 

try{

 

    $registrants = $registrations->find();

 

    if($registrants->count() > 0){

        echo "<h2>People who are registered:</h2>";

        echo "<table>";

        echo "<tr><th>Name</th>";

        echo "<th>Email</th>";

        echo "<th>Date</th></tr>";

        foreach($registrants as $registrant){

            echo "<tr><td>".$registrant['name']."</td>";

            echo "<td>".$registrant['email']."</td>";

            echo "<td>".$registrant['date']."</td></tr>";

        }

        echo "</table>";

    } else {

        echo "<h3>No one is currently registered.</h3>";

    }

} catch (Exception $e) {

    echo "<pre>";

    print_r($e);

    echo "</pre>";

}

?>

</body>

</html>

Примечание . Вместо жесткого подключения строки подключения к приведенному выше коду, вы можете добавить ее в качестве пользовательской строки в раздел строки подключения на вкладке КОНФИГУРАЦИЯ панели мониторинга вашего веб-сайта. Затем вам придется изменить приведенный выше код, чтобы получить строку подключения в качестве переменной среды. Дополнительная информация о том, как это сделать, приведена здесь: Получение информации о подключении к базе данных на веб-сайтах Windows Azure .

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

Вот и все. Получайте удовольствие и дайте нам знать, что вы думаете.

Спасибо.

-Брайан