let connection;
function connectDatabase() {
connection = mysql.createConnection(/* ваши параметры */);
connection.connect(function (err) {
// Если сервер перезагрузился или упал
if (err) setTimeout(connectDatabase, 2000); // Ждём две секунды, пробуем снова
});
connection.on('error', function (err) {
// если потеряли соединение, то подключаемся заново
// в остальных случаях выкидываем exception, чтобы узнать, что произошло
if (err.code === 'PROTOCOL_CONNECTION_LOST') connectDatabase();
else throw err;
});
}
connectDatabase();
class Category
{
private $children = null;
public function __get($property)
{
if ($property === 'children') {
if ($this->children !== null) return $this->children;
else {
$this->children = $this->getChildren();
return $this->children;
}
} else {
throw 'Undefined property';
}
}
private function getChildren()
{
// TODO: запрос к базе и получение результата
}
}
$category = new Category();
someAction($category->children); // в первый раз будет запрос
showSubCategories($category->children); // второй и послудеющий раз возьмёт уже из приватного поля
function getSubName($arr, $elementId) {
foreach ($arr as $element) {
if ($element['sub_id'] === $elementId) return $element['name'];
}
return false;
}
echo getSubName($arr, 1) . "\n";
class Human
{
public string Name { get; set }
}
class Human
{
private string _name;
public string GetName()
{
return this._name;
}
public void SetName(string value)
{
this._name = value;
}
}
class Human
{
private string _phone;
public string Phone
{
get => "Human phone" + this._phone;
set =>
{
this._phone = value;
if (value[0] != '+') this._phone = "+" + this._phone;
}
}
}
class Human
{
private string _phone;
public string GetPhone()
{
return "Human phone: " + this._phone;
}
public void SetPhone(string value)
{
this._phone = value;
if (value[0] != '+') this._phone = "+" + this._phone;
}
}
var human = new Human();
human.Name = "John";
Console.WriteLine(human.Name);
Human human = new Human();
human.SetName("John");
Console.WriteLine(human.GetName());
partial class MyForm
{
private SoundPlayer Player = new SoundPlayer(Properties.Resources.SoundName);
private void PlayAudio()
{
// Если нужно загружать именно по нажатию кнопки
// this.Player = new SoundPlayer(Properties.Resources.SoundName);
this.Player.PlayLooping();
}
}
Content-Type: application/json
async Task<string> SendRequestUntilSuccess(string url)
{
try
{
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
return response.Content.ReadAsStringAsync();
}
catch(HttpRequestException e)
{
return SendRequestUntilSuccess(url);
}
}
const newContent = { ...this.state.content };
newContent.themes[0].questions_count++;
this.setState({ content: newContent });