Saudações, caro amigo! Programa de afiliados Flimsy success php

O mecanismo padrão para armazenar dados de sessão de usuário em php é o armazenamento em arquivos. No entanto, quando o aplicativo está sendo executado em vários servidores para balanceamento de carga, torna-se necessário armazenar os dados da sessão em um armazenamento disponível para cada servidor de aplicativos. Neste caso, para o armazenamento de sessões é bem adequado Redis.

A solução mais popular é a extensão phpredis. Basta instalar a extensão e configurar o php.ini e as sessões serão salvas automaticamente no Redis sem alterar o código do aplicativo.

No entanto, esta solução tem uma desvantagem - nenhum bloqueio de sessão.

Ao usar o mecanismo padrão para armazenar sessões em arquivos, uma sessão aberta bloqueia o arquivo até que seja fechado. Com vários acessos simultâneos à sessão, as novas solicitações aguardarão até que a anterior conclua a sessão. No entanto, não existe tal mecanismo de bloqueio ao usar o phpredis. Com várias solicitações assíncronas, ocorre uma corrida ao mesmo tempo e alguns dados gravados na sessão podem ser perdidos.

É fácil verificar. Enviamos de forma assíncrona 100 solicitações para o servidor, cada uma das quais grava seu próprio parâmetro na sessão, então contamos o número de parâmetros na sessão.

Script de teste

"; pausa;)


Como resultado, concluímos que não há 100 parâmetros na sessão, mas 60-80. Perdemos o resto dos dados.
Em aplicativos reais, é claro, não haverá 100 solicitações simultâneas, mas a prática mostra que mesmo com duas solicitações simultâneas assíncronas, os dados gravados por uma das solicitações são frequentemente substituídos pela outra. Portanto, usar a extensão phpredis para armazenar sessões não é seguro e pode levar à perda de dados.

Como uma das opções para resolver o problema - a sua própria SessionHandler que suporta o bloqueio.

Implementação

Para bloquear uma sessão, defina o valor da chave de bloqueio para um valor gerado aleatoriamente (baseado em uniqid). O valor deve ser exclusivo para que nenhuma solicitação paralela possa ser acessada.

Função protegida lockSession ($ sessionId) ($ tentativas = (1000000 * $ this-> lockMaxWait) / $ this-> spinLockWait; $ this-> token = uniqid (); $ this->< $attempts; ++$i) { $success = $this->redis-> set ($ this-> getRedisKey ($ this-> lockKey), $ this-> token, ["NX",]); if ($ success) ($ this-> locked = true; return true;) usleep ($ this-> spinLockWait); ) retorna falso; )
O valor é definido com a bandeira NX, ou seja, a instalação ocorre apenas se não houver essa chave. Se essa chave existir, tentamos novamente depois de um tempo.

Você também pode usar o tempo de vida limitado da chave no rabanete, no entanto, o tempo de execução do script pode ser alterado depois que a chave for instalada, e o processo paralelo será capaz de acessar a sessão até terminar de trabalhar com ela no script atual. Quando o script termina, a chave é excluída em qualquer caso.

Ao desbloquear uma sessão no final do script, para excluir a chave, use Lua-cenário:

Função privada unlockSession () ($ script =<<redis-> eval ($ script, array ($ this-> getRedisKey ($ this-> lockKey), $ this-> token), 1); $ this-> locked = false; $ this-> token = null; )
Use o comando DELé impossível, pois pode ser usado para excluir uma chave definida por outro script. O mesmo cenário garante a exclusão apenas se a chave de bloqueio corresponder a um valor exclusivo definido pelo script atual.

Código de aula completo

classe RedisSessionHandler implementa \ SessionHandlerInterface (protected $ redis; protected $ ttl; protected $ prefix; protected $ locked; private $ lockKey; private $ token; private $ spinLockWait; private $ lockMaxWait; public function __construct (\ Redis $ redis, $ prefix = "PHPREDIS_SESSION:", $ spinLockWait = 200000) ($ this-> redis = $ redis; $ this-> ttl = ini_get ("gc_maxlifetime"); $ iniMaxExecutionTime = ini_get ("max_execution_time"); $ this-> lockMaxWait = $ iniMaxExecutionTime? $ iniMaxExecutionTime * 0,7: 20; $ this-> prefix = $ prefix; $ this-> locked = false; $ this-> lockKey = null; $ this-> spinLockWait = $ spinLockWait;) função pública aberta ($ savePath , $ sessionName) (return true;) função protegida lockSession ($ sessionId) ($ tentativas = (1000000 * $ this-> lockMaxWait) / $ this-> spinLockWait; $ this-> token = uniqid (); $ this-> lockKey = $ sessionId. ".lock"; para ($ i = 0; $ i< $attempts; ++$i) { $success = $this->redis-> set ($ this-> getRedisKey ($ this-> lockKey), $ this-> token, ["NX",]); if ($ success) ($ this-> locked = true; return true;) usleep ($ this-> spinLockWait); ) retorna falso; ) função privada unlockSession () ($ script =<<redis-> eval ($ script, array ($ this-> getRedisKey ($ this-> lockKey), $ this-> token), 1); $ this-> locked = false; $ this-> token = null; ) public function close () (if ($ this-> locked) ($ this-> unlockSession ();) return true;) public function read ($ sessionId) (if (! $ this-> locked) (if (! $ this-> lockSession ($ sessionId)) (return false;)) return $ this-> redis-> get ($ this-> getRedisKey ($ sessionId)) ?: "";) public function write ($ sessionId, $ data) (if ($ this-> ttl> 0) ($ this-> redis-> setex ($ this-> getRedisKey ($ sessionId), $ this-> ttl, $ data);) else ($ this-> redis-> set ($ this-> getRedisKey ($ sessionId), $ data);) return true;) função pública destruir ($ sessionId) ($ this-> redis-> del ($ this-> getRedisKey ($ sessionId) ); $ this-> close (); return true;) public function gc ($ lifetime) (return true;) public function setTtl ($ ttl) ($ this-> ttl = $ ttl;) public function getLockMaxWait () ( return $ this-> lockMaxWait;) função pública setLockMaxWait ($ lockMaxWait) ($ this-> lockMaxWait = $ lockMaxWait;) função protegida getRedisKey ($ key) (if (empty ($ this-> prefixo)) (return $ key; ) Retorna $ this-> prefixo. $ key; ) função pública __destruct () ($ this-> close ();))

Conexão

$ redis = novo Redis (); if ($ redis-> connect ("11.111.111.11", 6379) && $ redis-> select (0)) ($ handler = new \ suffi \ RedisSessionHandler \ RedisSessionHandler ($ redis); session_set_save_handler ($ handler);) session_start ();

Resultado

Depois de conectar nosso SessionHandler nosso script de teste mostra com segurança 100 parâmetros por sessão. Ao mesmo tempo, apesar do bloqueio, o tempo total de processamento de 100 solicitações aumentou ligeiramente. Na prática real, não haverá esse número de solicitações simultâneas. No entanto, o tempo de execução do script geralmente é mais significativo e pode haver tempos de espera perceptíveis para solicitações simultâneas. Portanto, você precisa pensar em reduzir o tempo gasto trabalhando com a sessão de script (chamando session_start () apenas quando é necessário trabalhar com a sessão e session_write_close () quando você terminar de trabalhar com ele)

AJAX é um grupo de tecnologias usadas em desenvolvimento web para criar aplicativos interativos. AJAX permite que você transfira dados do servidor sem recarregar a página. Desta forma, resultados muito impressionantes podem ser obtidos. E a biblioteca jQuery torna muito mais fácil implementar AJAX com métodos integrados.

Para implementar a tecnologia, o método é usado $ .ajax ou jQuery.ajax:

$ .ajax (propriedades) ou $ .ajax (url [, propriedades])

O segundo parâmetro foi adicionado na versão 1.5 do jQuery.

url- endereço da página solicitada;

propriedades- solicitar propriedades.

Para uma lista completa de parâmetros, consulte a documentação do jQuery.

Neste tutorial, usaremos vários dos parâmetros mais comumente usados.

sucesso (função)- esta função é chamada após a conclusão bem-sucedida da solicitação. A função recebe de 1 a 3 parâmetros (dependendo da versão da biblioteca utilizada). Mas o primeiro parâmetro sempre contém os dados retornados do servidor.

dados (objeto / string)- dados do usuário que são transmitidos para a página solicitada.

dataType (string)- valores possíveis: xml, json, script ou html. Uma descrição do tipo de dados esperados na resposta do servidor.

tipo (string)- o tipo de solicitação. Valores possíveis: GET ou POST. Padrão: GET.

url (string)é o URL da solicitação.

Exemplo 1

Transmissão de texto simples.

$ .ajax ((url: "resposta.php? ação = amostra1", sucesso: função (dados) ($ (". resultados"). html (dados);)));

Há um elemento .result div para a resposta.

Esperando por uma resposta

O servidor apenas retorna uma string:

Eco "Exemplo 1 - transmissão concluída com sucesso";

Exemplo 2

Passamos os dados personalizados para o script PHP.

$ .ajax ((digite: "POST", url: "resposta.php? ação = amostra2", dados: "nome = André & apelido = Aramis", sucesso: função (dados) ($ (". resultados"). html (dados);)));

O servidor retorna uma string com os dados passados ​​inseridos nela:

Eco "Exemplo 2 - transferência concluída com sucesso. Parâmetros: nome =". $ _POST ["nome"]. ", apelido =". $ _POST ["apelido"];

Exemplo 3

Passagem e execução de código JavaScript

$ .ajax ((dataType: "script", url: "response.php? action = sample3",))

O servidor executa o código:

Echo "$ (". Resultados "). Html (" Exemplo 3 - Executando JavaScript ");";

Exemplo 4

Usamos XML. O exemplo pode ser usado para trabalhar com XML externo, como um feed RSS.

$ .ajax ((dataType: "xml", url: "response.php? action = sample4", success: function (xmldata) ($ (". results"). html (""); $ (xmldata) .find ("item"). each (function () ($ ("") .html ($ (this) .text ()). appendTo (". results");));)));

O servidor deve retornar o código XML:

Cabeçalho ("Tipo de conteúdo: aplicativo / xml; conjunto de caracteres = UTF-8"); eco<< Parágrafo 1 Ponto 2 Ponto 3 Item 4 Item 5 XML;

Exemplo 5

Usamos dados JSON. Os parâmetros de entrada podem ser usados ​​como atributos do objeto resultante.

$ .ajax ((dataType: "json", url: "response.php? action = sample5", success: function (jsondata) ($ (". results"). html ("Name =" + jsondata.name + " , Apelido = "+ jsondata.nome);)));

O servidor deve retornar dados no formato JSON:

$ aRes = array ("nome" => "André", "apelido" => "Aramis"); require_once ("Services_JSON.php"); $ oJson = novo Services_JSON (); echo $ oJson-> encode ($ aRes);

Na era da web moderna, a maioria dos sites está se tornando mais interativa. Se antes, para receber os dados atualizados, precisávamos atualizar completamente a página, agora existem tecnologias que permitem que a página inteira não carregue, mas apenas uma parte separada dela. Por sua vez, isso proporciona comodidade tanto aos usuários quanto aos proprietários dos servidores, pois para o usuário o carregamento da página será mais rápido, já que apenas uma parte separada da página é carregada, e o servidor não precisa gerar a página todas as vezes e fornecê-la para o usuário. Esses recursos são fáceis de implementar usando php e ajax.

Hoje vamos analisar um pequeno exemplo para entender melhor como funciona o conceito. AJAX... Às vezes é difícil para iniciantes entender como php e ajax interagem entre si, muitas pessoas estão procurando exemplos de como validar formulários em tempo real sem recarregar a página inteira. Mostrarei brevemente como isso é feito, para que você possa entender os fundamentos e princípios que permitirão que você domine rapidamente outras ferramentas e escreva seus próprios scripts no futuro.

Vamos fazer uma pequena tarefa para nós mesmos, vamos verificar a presença de um endereço de e-mail no banco de dados sem recarregar a página usando php e ajax. Esse exemplo irá demonstrar bem como podemos interagir com o servidor sem recarregar a página no navegador, e também, isso é frequentemente usado em vários tipos de validações de formulário do usuário. No diretório raiz, crie 3 arquivos chamados index.php, email.php, validate.js.

Crie uma página

Vamos criar uma página de formulário simples que contenha apenas um campo de e-mail.
Sintaxe do arquivo index.php

Tutorial AJAX

A maneira mais fácil de trabalhar com AJAXÉ conectar o framework jQuery, o que eu realmente fiz. jQuery nos fornece uma sintaxe fácil de entender e usar para enviar AJAX pedidos, por que não aproveitar isso?

Criação de script Js

A sintaxe do arquivo validate.js é

$ (document) .ready (function () (var email = ""; $ ("# email"). keyup (function () (var value = $ (this) .val (); $ .ajax ((type: "POST", url: "email.php", data: "email =" + valor, sucesso: função (msg) (if (msg == "válido") ($ ("# mensagem"). Html (" Este e-mail pode ser usado.Este e-mail já está tomado.");))));)); $ (" # submit "). click (function () (if (email ==" ") (alert (" Por favor, coloque os dados em todos os emails ");) else ( $ .ajax ((type: "POST", url: "email.php", data: "add_email =" + email, success: function (msg) ($ ("# message"). html (msg);)) );)));));

Manipulador de php

Este script irá receber PUBLICAR pedido do cliente, processe-o e retorne o resultado. AJAX lê o resultado e toma uma decisão com base nele.
A sintaxe do arquivo email.php é

$ connection = mysqli_connect ("localhost", "email", "email", "email"); if (isset ($ _ POST ["email"]) && $ _POST ["email"]! = "") ($ email = $ _POST ["email"]; $ email = mysqli_real_escape_string ($ connection, $ email); if (! filter_var ($ email, FILTER_VALIDATE_EMAIL)) (echo "invalid";) else ($ sql = "SELECT id FROM email WHERE email =" $ email ""; $ result = mysqli_query ($ connection, $ sql); if (mysqli_num_rows ($ result) == 1) (echo "invalid";) else (echo "valid";))) if (isset ($ _ POST ["add_email"]) && $ _POST ["add_email"]! = "") ($ email = mysqli_real_escape_string ($ connection, $ _ POST ["add_email"]); $ sql = "INSERT INTO email (email) VALUES (" $ email ")"; if (mysqli_query ($ connection, $ sql )) (eco Sucesso";) else (echo" Erro"; } }

Em nosso script php, o código mais comum que processa uma solicitação de postagem e imprime algum texto na página. Como resultado AJAX envia uma solicitação ao script php, o script o processa e retorna o resultado, AJAX lê o resultado e muda a página em tempo real.

AJAX passa a solicitação POST para o script por meio deste trecho de código:

$ .ajax ((tipo: "POST", url: "email.php", dados: "email =" + valor, sucesso: função (msg) (if (msg == "válido") ($ ("# mensagem ") .html (" Este e-mail pode ser usado."); email = valor;) else ($ (" # mensagem "). html (" Este e-mail já está tomado."); } } });

tipo - o tipo de solicitação, POST ou GET. Em nosso caso, POST;
url - o endereço do script para o qual a solicitação é enviada;
dados - dados que são transmitidos na solicitação;
sucesso - o que fazer como resultado da execução bem-sucedida da solicitação. Em nosso caso, a função é chamada;

No próprio script, uma verificação da presença de e-mail no banco de dados é realizada toda vez que um caractere é inserido no campo de e-mail. No script, o $ ("# email"). Keyup (function () ()); que verifica se há um pressionamento de tecla no campo com id = "email".
Como você pode ver, o código é bastante simples e não requer habilidades particularmente grandes para entender, tudo está vinculado ao tratamento de eventos keyup () - pressionando uma tecla, click () - clicando em um elemento. Seguido pela AJAX solicitação e resposta do script. Assim, usando php e ajax, você pode obter possibilidades quase infinitas para criar páginas interativas.
Este código não alega ser de alta qualidade, mas se você desenvolvê-lo, adicionar as validações corretas no nível do cliente e do servidor, insira css, então você poderá usá-lo perfeitamente em seus projetos.
Se você tiver alguma dúvida, não hesite em escrever comentários.
Tenha um bom dia e nos vemos em breve 🙂

Saudações, caro amigo!

"O que é sucesso na vida para você ???"

Por favor, pense sobre isso, pare por um minuto.

Ok, agora deixe-me ajudá-lo. Sobre o que não é um sucesso, escrevi na lista de e-mails anterior. Vamos descartar esses conceitos imediatamente.

O sucesso é paz de espírito.
Sucesso é ser feliz.
O sucesso é perceber a si mesmo e descobrir seu potencial.
O sucesso é a realização na vida.
Sucesso é fazer o que você ama, que te inflama e você pode fazer isso o tempo todo.
Sucesso é dar-se aos outros e tornar este mundo um lugar melhor e outras pessoas mais felizes.
.

O sucesso está intimamente ligado ao estado de espírito. Nossa alma veio a este mundo para desfrutar e realizar-se, e nós (nossa mente, nosso corpo, nossa consciência) devemos apoiá-la nisso. Quando nossa alma se cria e se realiza, nos sentimos felizes. Quando sentimos e vemos que a criação de nossa alma e o que fazemos é de grande benefício para outras pessoas, sentimos bem-aventurança. Isso é o que se chama de sucesso. O sucesso é a realização da vida.

Qualquer realização dos talentos da alma só é possível graças a outras pessoas... A alma não cria para si mesma. Ela cria para os outros - para ajudá-los e tornar a vida de outras pessoas realizada e dar-lhes um pedaço de sua felicidade. Uma pessoa feliz passa um pedaço de sua felicidade para os outros, uma pessoa infeliz passa seu infortúnio para os outros. Evite pessoas infelizes!

Se de repente todas as pessoas desaparecem, a autorrealização torna-se impossível - de que adianta escrever livros, porque ninguém vai lê-los, de que adianta criar novos modelos de roupas, porque ninguém vai usar, o que o ponto de construir novas casas, nas quais ninguém vai morar?

Obviamente, isso não faz sentido.

Aqui aparece a dupla natureza do sucesso: a alma se cria e se realiza, e também ajuda outras pessoas a se tornarem mais felizes.
A definição mais precisa de sucesso que eu poderia dar soaria assim: sucesso é a realização de seus verdadeiros talentos, que tornam nosso mundo melhor, mais perfeito e as pessoas mais felizes.

Eu quero que você perceba profundamente que pessoas que vivem apenas para si mesmas e coletam riquezas apenas para si mesmas são infelizes... Eles reúnem essa riqueza para preencher o vazio espiritual que se formou como resultado de uma vida sem sentido. Mas esse vazio só pode ser preenchido com amor, trazendo valor para outras pessoas. A alma fica feliz quando se dá sem excessos para tornar este mundo um lugar melhor. E qual é o sentido de todas essas riquezas que uma pessoa acumulou quando faleceu, porque não somos duráveis. A alma vem para criar valor, para se realizar e então volta para "casa". Se ela não cria esse valor, mas faz outra coisa, ela se sente mal. Ela sente que veio a este mundo e não está fazendo o que quer. E a razão para isso é nossa mente - ela está cega pelo "sucesso" no entendimento geral desta palavra. Ele persegue o ilusório e, quando o consegue, se é que consegue, percebe a falta de sentido do que conquistou.

E o que é sucesso no entendimento geral?
- riqueza (dinheiro, coisas materiais)
- fama, poder, popularidade
- status

Mas veja, tudo vem do ego. Uma pessoa deseja sentir seu próprio significado, mas não entende que riqueza, fama e status são uma ilusão. Eles são como a água do mar, que não importa o quanto você beba, você nunca vai satisfazer sua sede. Portanto, as pessoas toda a sua vida e persegui-los. Eles acham que vou ganhar muito dinheiro e vou ficar feliz, vou chegar ao patamar de renda de $ 100.000 por ano e aí vou ficar feliz, quando eu subir no palco e cantar ficarei feliz , Vou me casar, vou ter filhos ... você pode conferir, mas posso dizer com 100% de certeza que você não será feliz. Além disso, seu nível de felicidade ficará ainda mais baixo. Você se afasta de sua vocação e, percebendo isso, a alma fica ainda mais infeliz. Quanto mais riqueza, fama e status você recebe, mais controle sobre a vida a mente assume e mais o papel da alma é empurrado para trás. Mas a verdadeira felicidade vem da alma!!!

O sucesso é harmonia entre alma e mente. O papel da razão é ajudar alma para se auto-realizar. Estamos priorizando errado. Colocamos o corpo de vida curta e as coisas materiais em primeiro lugar, e colocamos a alma imortal e a riqueza inesgotável em último lugar. A Bíblia diz: "acumule riquezas no céu, não na terra." Nosso corpo é um veículo para a alma... A alma está conectada com a Mente Superior e só ela é capaz de entender o que é necessário para este mundo. O universo incentiva as pessoas que seguem seus próprios caminhos... Seu caminho é o que menos consome energia, e em nosso mundo tudo flui pelo caminho de menor resistência. Sempre digo que o sucesso é um curso normal dos eventos. O fracasso é um desvio da norma. Se agora você não tem o sucesso que gostaria, então não está fazendo o que deveria. Alma e mente estão em conflito. E quanto mais discórdia, mais infeliz fica a pessoa.

Mas não pense que estou dizendo que uma pessoa não precisa de coisas materiais. Muito mesmo necessário. E aqui está o porquê: quando uma pessoa não tem dinheiro, ela é forçada a trabalhar e se envolver em algum tipo de "estupidez". Uma pessoa gasta 10 horas por dia para ganhar dinheiro, mas com isso ela não se realiza. O chef é a pessoa que se realiza à sua custa. (Eu digo, como acontece na maioria dos casos. A maioria das pessoas odeia seu trabalho, mas trabalha porque você precisa de dinheiro para sobreviver).

As coisas materiais criam conforto para a alma. As coisas materiais equipam este mundo para a alma. É muito mais agradável para a alma criar obras-primas em lugares que a inspiram. É muito melhor pintar um quadro em uma casa à beira-mar do que em uma "fossa". A alma precisa de paz e conforto para criar. Mas que paz pode haver se a família não tem dinheiro suficiente e todos os dias o marido e a mulher discutem por causa disso.

A alma precisa de tempo para se expressar. Só depois de algum tempo, o valor criado pela alma pode ser vendido e vendido centenas, ou mesmo milhares de vezes mais caro do que uma pessoa consegue no trabalho. Mas leva tempo para criar esse valor. Pessoalmente, demorei 5 meses para conseguir uma renda escassa. Após 8 meses, meu site começou a gerar uma renda com a qual uma família pobre já poderia viver. E só depois de 17 meses meu site começou a gerar renda, que já vai substituir a renda de um emprego muito bem remunerado.

Demorou 17 meses para substituir o trabalho. Mas agora estou livre! Eu faço o que amo e isso é só o começo. Não há limites para meus sonhos - o que significa que não há limites para mim. Quando você faz seus negócios, sua renda é limitada apenas pela sua imaginação e nada mais. Quem no trabalho ganha $ 1.000.000 por ano? Sim, pode haver um. Mas fazendo suas próprias coisas, mesmo esta não é uma capela.
O material é importante, mas apenas para satisfazer as necessidades de viver.

Eu serei honesto: sem receber renda, é mais difícil criar e criar obras-primas... A mente diz constantemente: "O que você faz é bom, mas vamos viver para quê?" E esta pergunta distrai constante e fortemente da criatividade. Ele tira nossa felicidade. Para desligar esse diálogo, seu passatempo favorito deve trazer dinheiro. É claro que a mente então começa a fazer outras perguntas, mas quanto mais dinheiro um negócio favorito traz, menos dolorosas e perturbadoras se tornam essas perguntas.

Freqüentemente, as pessoas trabalham no trabalho, ganham dinheiro, mas ainda têm um hobby. O que é um hobby?
Um hobby é um hobby que não gera renda. Mas por que não transformar um hobby em trabalho? As pessoas mais felizes são aquelas cujo hobby é o trabalho.... Eles não param de fazer o que amam.
Tudo o que falo, sobre trabalho, sobre dinheiro, quero transmitir a vocês dois pensamentos importantes: 1) Alma e mente devem estar em harmonia
2) O intangível deve estar sempre em primeiro lugar

O foco deve ser apenas no intangível! Material a ser anexado como consequência... Aqui estão as prioridades certas na vida:
felicidade -> saúde -> riqueza E muitas pessoas vivem de acordo com o esquema
riqueza-> saúde-> felicidade
E pior ainda, há pessoas que vivem de acordo com o padrão
riqueza-> riqueza-> riqueza

Não admira que não estejam felizes. Essas pessoas têm milhões, mas não têm amigos, têm problemas familiares. Eles têm problemas com as pessoas. Porque pensam que todas as pessoas que os rodeiam estão com eles apenas por causa do seu dinheiro e nada mais. Não sei sobre você, mas não gostaria dessa felicidade. Quando as prioridades da vida são definidas corretamente, a riqueza surge como resultado. Não adianta focar nisso. Altos níveis de felicidade e saúde levam inevitavelmente a altos níveis de renda.

As coisas materiais e nossa riqueza só podem servir como um acréscimo à nossa felicidade. Eles não podem servir de base. Qual é a base, já discutimos com você acima.

Stepan Ovchinnikov, INTERVOLGA

Empresa: INTERVOLGA
Ano de fundação: 2003
Status de parceiro: Gold, uma lista de empresas recomendadas para grandes implantações
Quantos anos tem o 1C-Bitrix: 7 anos
Especialização: sites tecnologicamente complexos, lojas online, portais corporativos, contas pessoais.

Conquistas:

  • Desde 2011, a cada ano o primeiro no Distrito Federal Sul
  • Estamos incluídos na lista de empresas recomendadas por 1C-Bitrix para grandes implantações
  • Mantemos um blog temático sobre desenvolvimento web e marketing na internet com um tráfego de até 800 pessoas por dia
  • A empresa emprega 50 pessoas
A história de uma pequena empresa regional que conseguiu crescer com a escolha certa de estratégia e tecnologia.

A empresa foi fundada em 2003 por um advogado de Volgogrado que nada tinha a ver com tecnologias e desenvolvimento web. Pareceu-lhe que não existiam bons sites, nem sistemas de referência de informação. Ele montou um estúdio na web para criar um sistema de ajuda regional e para buscar outros projetos no futuro.

Em 2005, quando comecei a trabalhar, a Intervolga já havia criado mais de uma centena de sites. Claro, eles eram primitivos para os padrões de hoje. Tentamos fazer outras coisas. O marketing na Internet não foi feito, apenas SEO.

Em 2006 tornei-me diretor comercial. Nos primeiros anos, continuamos a fazer o que começamos - desenvolver sites de Volgogrado. Não havia clientes não residentes naquela época.

Em 2009-2010, grandes mudanças ocorreram na empresa, coincidindo com o início de uma crise econômica prolongada. Comecei a delegar autoridade. Anteriormente, eu gerenciava todos os projetos sozinho.

Anteriormente, a empresa tinha um programador, ele processava tarefas de dois gerentes e era o suficiente para nós. Os programadores foram substituídos desta forma: um ano ou duas pessoas trabalharam e saíram, e a cada vez mudamos a cultura do código do programa. Percebi que substituir o programador é um grande problema. Naquela época, houve uma conversa com Sergei Ryzhikov. Ele perguntou: "Por que você não escreve para 1C-Bitrix?"


O período de incubação durou cerca de um ano - criamos sites simultaneamente em nosso código de programa antigo, no 1C-Bitrix e no UMI. Fizemos de seis a oito sites no 1C-Bitrix antes de decidirmos que trabalharíamos apenas com esta plataforma. Em seguida, houve a oportunidade de contratar outros programadores e, em 2010, havia dois deles na empresa. E então aprendemos como lidar com isso e configurar o trabalho de streaming.

Consequentemente, a estrutura de serviços mudou. Costumávamos criar sites simples e até mesmo uma loja online com uma cesta de pedidos e autorização era uma tarefa tecnicamente desafiadora para nós.

Nos seminários, expliquei às pessoas que não precisam de loja online, basta um catálogo com formulário de pedido. Só fiz isso porque éramos ruins em tarefas difíceis. Então nós aprendemos - você pega tudo o que é básico do 1C-Bitrix, você faz tudo o que não é trivial sozinho.

Sobre especialização

Criamos uma grande loja online para um distribuidor regional da Shell. Seu banco de dados está integrado ao banco de dados de todos os veículos, que teoricamente podem ser fornecidos com seus componentes. São vários milhares de modelos de equipamentos, para cada um deles são oferecidos os respectivos produtos Shell.

Fizemos um formulário de seleção. Esta é uma tarefa técnica - requer uma solução dos programadores, mas quando trabalhamos com 1C-Bitrix, resolvemos esse mesmo problema. E se continuássemos a escrever no nosso código, não conseguiríamos resolver tarefas padrão que já estão no 1C-Bitrix - por exemplo, “Basket”, “Search”, “Checkout”, integração com “1C” e outros. .. Agora estamos fazendo coisas fora do padrão de uma vez.

Temos um dos nossos projectos mais fortes - “Clube de Clientes Alfa-Bank”. Fazemos isso no 1C-Bitrix usando o add-on de autorização banco-cliente. Este site não utiliza o banco de dados 1C-Bitrix - ele é integrado através de APIs especiais com a mídia de armazenamento do cliente e recebe dados a partir daí.

O projeto mais legal deste ano é uma conta pessoal para clientes EVRAZ. No blog, descrevemos em detalhes como o fizemos e organizamos.

Temos muitas dúvidas e desejos sobre 1C-Bitrix como plataforma, mas do ponto de vista de negócios, esta é uma pílula mágica.

Sobre a confiança do cliente

Não creio que o nosso caminho seja o único certo, mas sempre procurámos trabalhar bem. Você assume um projeto simples, lentamente, mas bem. Gradualmente, você vai para um nível superior, eles notam você. Você recebe novos pedidos.

Como Ryzhikov nos notou - um estúdio regional esquálido e microscópico? Escrevi uma dezena de artigos sobre Habré que nos tornaram notáveis. O Alfa-Bank nos contatou com uma pergunta direta: "Por que vocês são tão bonitos e espertos, que não participam do nosso concurso?" E nós participamos.

Não podemos fornecer publicidade em massa, obter pistas quentes e concluir um projeto rapidamente. Não realizamos projetos mais de uma vez e meia mais complexos e maiores do que os anteriores. Entendemos que haverá diferenças qualitativas para as quais ainda não estamos preparados. Portanto, estamos nos desenvolvendo lentamente.

Contamos a complexidade dos projetos em horas-homem. Podemos avaliar o projeto rapidamente - um ou dois dias úteis. Existe essa unidade de medida, que é chamada de "loja sofisticada" - 700-800-1000 horas de trabalho. Pode haver duas ou mais "lojas elegantes".

Não usamos soluções produzidas em massa - não descobrimos como ganhar dinheiro com isso. Portanto, trabalhamos apenas com terceirização - fazemos nossa própria terceirização para clientes individuais.

Houve um período em que fizemos três lojas de ferramentas elétricas concorrentes em Volgogrado. Ainda existem projetos específicos como, por exemplo, uma loja online de eletrônicos industriais Siemens, ABB, Schneider Electric. Eles têm muitos revendedores e todo mundo quer uma loja online bacana.

Às vezes, os clientes vêm até nós no meio da multidão: eles gostaram de um site e todos querem o mesmo. Mas concluímos um acordo com todos. A circulação não é para nós.

Fizemos vários módulos para o marketplace. São muito simples, valeram a pena muitas vezes devido à sua simplicidade: investimos 20-30 horas de trabalho e vendemos este módulo 100 vezes.

Como se declarar

Em 2009, realizamos seminários todos os anos, e às vezes várias vezes por ano - nós mesmos e junto com 1C-Bitrix. Nas primeiras dez vezes que fiz isso, um dos chefes de departamento fez. Agora, a equipe tem um gerente de linha que está envolvido em seminários.

Participamos de quase todos os programas, avaliações, monitoramento de qualidade. Escrevemos casos sobre qualquer trabalho mais ou menos notável. Tenho orgulho de que nosso site esteja entre os parceiros mais ricos em informações no tópico Bitrix24 e, possivelmente, em 1C-Bitrix: Gerenciamento de sites.

Por que estamos fazendo isso? Isso eleva nosso nível. Nós trabalhamos e pensamos sobre o trabalho feito, colocamos em um artigo. Isto é PR - as pessoas lêem.

O site da Intervolgi, que realizamos no nosso tempo livre, recebe 800 visitantes por dia, sendo 80% deles consultas de baixa frequência. Ou seja, um blog com 250 artigos é visitado por cerca de 650 pessoas por dia. Não somos jornalistas, mas os artigos geram um bom tráfego.

Já participei de exposições no estande 1C-Bitrix mais de uma vez. Participamos de exposições nós mesmos. Para ser honesto, fiquei um pouco decepcionado com eles - eles não dão clientes e relações públicas, apenas conversas. Se você quer saber o que as pessoas pensam, participe de exposições.

Certa vez, tive um caso assim: falei com 172 pessoas em dois dias. No final do dia, percebi que não conseguia nem terminar minha frase. Mas falar de tarefas específicas não traz vendas, então não iremos mais a exposições.

Mas adoramos todos os seminários, eventos de massa onde você pode falar e contar algo bom. Atuamos de graça, a partir do custo apenas bilhetes para Moscou. Tentamos usar todas as oportunidades para relações públicas.

É útil quando a empresa está sendo promovida por concorrentes - muitas vezes somos recomendados para a implementação do Bitrix24. Mas é melhor ser RP entre os clientes, e eles precisam ser levados para outro lugar. Para isso participamos em mostras técnicas especializadas, por exemplo, “MetalExpo”, “Autocomponents” em Togliatti.

Realmente existe um campo de clientes incomparáveis, mas o problema é que se trata de leads “frios”. Eles não entendem o que querem. Para colocá-los à venda, você precisa se comunicar com todos por um ano. E não estamos preparados para isso, preferimos os mais "calorosos". Nós os obtemos por meio do marketing de conteúdo.

Este é praticamente o único método de marketing que utilizamos: escrevemos artigos, escrevemos casos, atraímos pessoas e recebemos pedidos - de três a cinco por dia útil. Novo. Isso é muito e é bastante difícil processá-los.

Conselho

Você tem que tentar aumentar os preços o tempo todo. Em algum momento, o mercado dirá que você não pode mais aumentar os preços, mas precisa continuar. Arrumando a infraestrutura, reduzindo perdas, aumentando a eficiência do trabalho. Agora ainda enfrentamos economias de escala. Empregamos mais de 50 pessoas, e uma equipe tão grande não poderia existir em uma bagunça.

Por dentro, você precisa monitorar a capacidade de produção, a qualificação das pessoas, lutar pelos programadores, aumentar os salários - para garantir que a empresa não entre em colapso.

Alexey Saminsky, um consultor, geralmente formula isso de forma extremamente dura:

“Se você tiver algum problema que leve a perdas ou não estiver satisfeito com a forma como trabalha, deve primeiro aumentar os preços em 40%, depois cortar 40% do pessoal e só então lidar com os problemas de qualidade. Se você fizer isso na ordem inversa, com certeza morrerá. "

A inércia psicológica costuma atrapalhar. Empreendi dois projetos, cujo montante parecia na época tão grande que com esse dinheiro você pode fazer o que quiser. Atitudes psicológicas que não permitem que você olhe adequadamente para o que está fazendo são perigosas.

Quando comecei a trabalhar em 2009, o preço base para um site na Intervolga era 11-16, talvez 20 mil rublos. Era um site com design, com código, com CMS, com instruções, com gestão - por 20 mil rublos. Se então o nível médio era de 15 mil rublos, agora os sites são 10-20 vezes mais. Esta é a barra mínima para lojas online que estamos fazendo agora. Sobre a "circulação" - 150, a pedido com design - 350 mil.

As limitações psicológicas impedem muitos de fazer o que não fizeram ontem. Eu não acho que sou diferente deles. Constantemente me encontro em estado de estupor, o que me impede de dar o próximo passo. O tempo todo tento tirá-los, conversando com pessoas espertas. É necessário remover as barreiras internas e aumentar o nível de consciência.