Changes between Version 34 and Version 35 of Servicos/Z-Push/InstalacaoServidor


Ignore:
Timestamp:
05/13/11 14:23:47 (13 years ago)
Author:
emersonfaria
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Servicos/Z-Push/InstalacaoServidor

    v34 v35  
    8383     O trace detalhado pode ser habilitado no arquivo ''/var/www/z-push/config.php''. Ele é habilitado por login, no parâmetro ''TRACE_UID'', e por tipo(''ALL'', ''IMAP'', ''CALENDAR'' ou ''CONTACTS''), no parâmetro ''TRACE_TYPE'', e gera um arquivo de saída chamado ''/var/www/z-push/trace-<LOGIN_USUARIO>.txt'' . É recomendado que o trace detalhado só fique habilitado quando necessário, caso contrário atribua o valor ''false''(sem aspas) ao parâmetro ''TRACE_UID''.[[BR]] 
    8484 
    85      Para que o trace tenha um grande número de detalhes, deve-se atribuir ''true'' para a constante ''WBXML_DEBUG'' no arquivo ''/var/www/z-push/wbxml.php''. Note que, com essa opção habilitada, o servidor fica mais lento.[[BR]] 
     85     Para que o trace tenha um grande número de detalhes, deve-se atribuir ''true'' para a constante ''WBXML_DEBUG'' no arquivo ''/var/www/z-push/wbxml.php''. Evite deixar essa opção habilitada mais tempo que o necessário, para não sobrecarregar o servidor.[[BR]] 
     86 
     87     Para que o arquivo de Trace não fique muito grande, no Exchange !ActiveSync do celular, desative a sincronização automática(PUSH) e em seguida sincronize uma vez para que o servidor do Z-Push entenda que a sincronização automática foi desativada.[[BR]] 
     88 
     89     A cada sincronização, novos dados são adicionados ao arquivo de Trace do usuário. Para iniciar um trace zerado, basta apagar o arquivo antes de sincronizar. 
    8690   
    87      Alguns problemas podem ser solucionados pesquisando pela palavra ''ERRO'' no trace, enquanto outros precisam ser inferidos através da análise do trace, do código-fonte, do banco de dados, do IMAP e do SMTP.[[BR]] 
     91     Alguns problemas podem ser solucionados pesquisando pela palavra ''ERRO'' nas linhas que tem a string ''[TRACE]'', enquanto outros precisam ser inferidos através da análise do trace, do código-fonte, do S.O., do banco de dados, do PHP, do IMAP e do SMTP.[[BR]] 
    8892 
    8993     Para facilitar o entendimento do conteúdo do trace, é recomendado ter uma noção do funcionamento do protocolo [http://msdn.microsoft.com/en-us/library/dd299446(v=exchg.80).aspx Exchange ActiveSync]. O protocolo tem um conjunto pré-definido de comandos que são enviados pelos celulares e respondidos pelo servidor.[[BR]] 
     
    9498     3) Para cada pasta configurada para sincronizar seus itens, o celular envia o comando "Sync" e o servidor responde com a chave única(!SyncKey) que será usada nas sincronizações desta pasta.[[BR]] 
    9599     4) O celular envia o comando "!GetItemEstimate" e o servidor responde quantos itens(Found n message changes) serão sincronizados em cada pasta.[[BR]] 
    96      5) Para cada pasta, o celular envia o comando "Sync" para sincronizar seus itens. 
    97           5.1) Se existem mudanças de itens feitas no celular, elas são enviadas e processadas pelo servidor(Processed n incoming changes).[[BR]] 
    98           5.2) Se existem mudanças de itens feitas no servidor(Found n message changes) , elas são enviadas para o celular.[[BR]] 
     100     5) Para cada pasta, o celular envia o comando "Sync" para sincronizar seus itens.[[BR]] 
     101         5.1) Se existem mudanças de itens feitas no celular, elas são enviadas e processadas pelo servidor(Processed n incoming changes).[[BR]] 
     102         5.2) Se existem mudanças de itens feitas no servidor(Found n message changes) , elas são enviadas para o celular.[[BR]] 
     103    O usuário é autenticado sempre que o celular envia um comando para o servidor.[[BR]] 
     104[[BR]] 
     105    EXEMPLO DE DEPURAÇÃO DE BUGS 01:[[BR]][[BR]] 
     106    Suponha que uma das mensagens de e-mail, com data de dois dias atrás, não está aparecendo no celular do usuário com login “testeexpresso”. O filtro do celular está configurado para mostrar e-mails das duas últimas semanas. Para depurar esse problema, podemos fazer o seguinte:[[BR]][[BR]] 
     107    1) Seguindo instruções descritas no tópico “Configuração e uso do Trace”, ative o trace de IMAP para o usuário “testeexpresso”;[[BR]] 
     108    2) Inicie uma sincronização, para criar o arquivo /var/www/z-push/trace-testeexpresso.txt;[[BR]] 
     109    3) Como somente um e-mail, dentre vários, não está sendo sincronizado, provavelmente o problema está somente neste e-mail. Talvez ele esteja com o cabeçalho mal formatado ou está correto e o Z-Push não esta conseguindo reconhecer. Vamos analisar o arquivo de trace;[[BR]] 
     110    4) No início do arquivo de trace, aparece o comando “Options request” que tem como finalidade apenas informar ao celular, quais comandos do !ActiveSync são suportados pelo servidor. A maioria dos problemas não tem nada a ver com isso, inclusive o nosso;[[BR]] 
     111    5) Em seguida, vem o comando “!FolderSync”, o qual tem como objetivo sincronizar as pastas(não o conteúdo das pastas) do servidor com o celular. Aqui precisamos verificar se a pasta INBOX, onde está armazenado o e-mail, é listada;[[BR]] 
     112    6) O próximo comando é o  “!GetItemEstimate” que lê as mensagens do servidor IMAP e retorna a quantidade de e-mails que precisam ser sincronizados, levando em conta o filtro de período. Aqui observamos que o nosso e-mail não está aparecendo. Agora precisamos saber porque o servidor IMAP não retorna o e-mail para o Z-Push. Como não está aparecendo nenhuma mensagem de erro no trace, vamos verificar o que tem diferente nesse e-mail em relação aos que estão funcionando;[[BR]] 
     113    7) Exportando o e-mail a partir da interface do Expresso, verificamos que o valor do campo date que aparece em seu cabeçalho é anterior ao período filtrado, isso nos indica que o Z-Push está agindo corretamente não sincronizando esse e-mail. Analisando o funcionamento da Importação de mensagens no Expresso, verificamos que a data que aparece na interface do Expresso é a que o e-mail foi importado e não a que está no servidor IMAP. Assim, concluímos que o problema é devido ao comportamento da rotina de importação de e-mails do Expresso. Possíveis soluções para este problema seriam o Expresso apresentar em sua interface a data armazenada no IMAP   ou alterar a data armazenada no IMAP para a data da importação.[[BR]] 
     114[[BR]] 
     115    EXEMPLO DE DEPURAÇÃO DE BUGS 02:[[BR]] 
    99116 
    100      O usuário é autenticado sempre que o celular envia um comando para o servidor.[[BR]] 
     117    Suponha que um evento de calendário criado no Expresso não está sendo sincronizado com o Celular do usuário com login “testeexpresso”. Veja a seguir como foi rastreado este problema:[[BR]] 
     118 
     119    1) Seguindo instruções descritas no tópico “Configuração e uso do Trace”, ative o trace de CALENDAR para o usuário “testeexpresso”;[[BR]] 
     120    2) Inicie uma sincronização, para criar um novo arquivo /var/www/z-push/trace-testeexpresso.txt;[[BR]] 
     121    3) No início do arquivo de trace, aparece o comando “Options request” que tem como finalidade apenas informar ao celular, quais comandos do !ActiveSync são suportados pelo servidor. A maioria dos problemas não tem nada a ver com isso, inclusive o nosso;[[BR]] 
     122    4) Em seguida, vem o comando “!FolderSync”, o qual tem como objetivo sincronizar as pastas(não o conteúdo das pastas) do servidor com o celular. Aqui verificamos se a pasta “Calendar”, onde é armazenado todos eventos de calendário, foi sincronizada. No arquivo de trace isso é indicado atráves da string “Sync folder:Calendar” ; [[BR]] 
     123    5) O próximo comando é o  “!GetItemEstimate” que lê os eventos de calendário do Banco de Dados e retorna a quantidade de eventos que serão sincronizados, levando em conta o filtro de período. Conforme pode ser visto nas seguintes linhas de Trace, aparece um erro indicando que o valor 10095 do campo reference é inválido. Quando o valor do campo reference é diferente de zero, significa que o evento é do tipo único, filho de um evento recursivo. O trace detectou a inconsistência porque não existe um evento recursivo com chave primária igual a 10095, logo o evento filho é órfão. Como existe uma inconsistência no Banco de Dados, o campo reference precisa ser atualizado para o valor zero ou esse evento precisa ser excluído:[[BR]] 
     124 
     125    ''05/12/11 11:01:33 [11155] [testeexpresso] [TRACE] CalendarExpresso::!GetMessageList-> ERRO: Evento com campo reference inválido (cal_id: 11329, title: teste, reference: 10095, last_update: 13/04/2011 16:11:28, last_update_timestamp: 1302721888214, datetime: 09/12/2010 10:00:00, datetime_timestamp: 1291896000, cal_type: E)''[[BR]][[BR]] 
     126 
     127    Os exemplos apresentados não pretendem esgotar os inúmeros caminhos que a depuração pode seguir, mas sim dar uma ideia inicial de como a depuração é feita.[[BR]]