Recolha de dados
Para ajudar a tornar os produtos melhores, automaticamente coletamos dados referentes a estatísticas de usuário nas aplicações 4D Server Dados completados são anônimos e dados são transferidos sem ter impacto na experiência de usuário. Dados completados são anônimos e dados são transferidos sem ter impacto na experiência de usuário.
Esta página explica:
- que informação é coletada,
 - onde a informação é armazenada e quando é enviada a 4D,
 - como desativar a coleção de dados automática em aplicações cliente/servidor
 
Informação coletada
Dados são coletados durante os eventos abaixo:
- arranque da base de dados,
 - fechamento de banco de dados,
 - início do servidor Web,
 - execução php,
 - ligação cliente,
 - envio da recolha de dados.
 
Alguns dados são também recolhidos a intervalos regulares.
Recolhidos no arranque da base de dados
| Dados | Tipo | Notas | 
|---|---|---|
| CPU | Text | Nome, tipo, e velocidade do processador | 
| numberOfCores | Number | Número total de núcleos | 
| memory | Number | Volume de armazenamento de memória (em bytes) disponível na máquina | 
| system | Text | Versão do sistema operativo e número de construção | 
| headless | Parâmetros | Verdadeiro se a aplicação estiver a correr em modo sem cabeça | 
| version | Number | Número da versão da aplicação 4D | 
| buildNumber | Number | Número da versão da aplicação 4D | 
| licença | Object | Nome comercial e descrição das licenças do produto | 
| isRosetta | Parâmetros | True se 4D for emulado através do Rosetta no macOS, False caso contrário (não emulado ou no Windows). | 
| uniqueID | Text | ID único do 4D Server | 
| id | Texto (cadeia de caracteres com hash) | Identificação única associada à base de dados (Polinômio Rolling hash do nome da base de dados) | 
| dataFileSize | Number | Tamanho do arquivo de dados em bytes | 
| indexesSize | Number | Tamanho do índice em bytes | 
| cacheSize | Number | Tamanho da cache em bytes | 
| usingLegacyNetworkLayer | Parâmetros | Verdadeiro se a usar a camada de rede herdada para o servidor de aplicações | 
| usingQUICNetworkLayer | Parâmetros | True se a base de dados utilizar a camada de rede QUIC | 
| encryptedConnections | Parâmetros | True se as ligações cliente/servidor forem encriptadas | 
| encrypted | Parâmetros | True se o arquivo de dados estiver criptografado | 
| compiled | Parâmetros | Verdadeiro se a aplicação for compilada | 
| isEngined | Parâmetros | Verdadeiro se a aplicação for fundida com o Volume Desktop 4D | 
| projectMode | Parâmetros | Verdadeiro se a aplicação for compilada | 
| mobile | Collection | Informação sobre sessões móveis | 
Recolhidos no arranque do servidor Web e no envio da recolha de dados
| Dados | Tipo | Notas | 
|---|---|---|
| webServer | Object | "started":true se o servidor Web estiver a arrancar ou iniciado | 
Recolha a intervalos regulares
| Dados | Tipo | Notas | 
|---|---|---|
| maximumNumberOfWebProcesses | Number | Número máximo de processos Web simultâneos | 
| maximumUsedPhysicalMemory | Number | Utilização máxima da memória física | 
| maximumUsedVirtualMemory | Number | Utilização máxima da memória virtual | 
Recolhido no envio da recolha de dados
| Dados | Tipo | Notas | 
|---|---|---|
| uptime | Number | Tempo decorrido (em segundos) desde que a base de dados 4D local foi aberta | 
| cacheReadBytes | Object | Número de bytes lidos da cache | 
| cacheMissBytes | Object | Número de bytes perdidos na cache | 
| cacheReadCount | Object | Número de leituras na cache | 
| cacheMissCount | Object | Número de leituras falhadas na cache | 
| dataSegment1.diskReadBytes | Object | Número de bytes lidos no ficheiro de dados | 
| dataSegment1.diskWriteBytes | Object | Número de bytes escritos no ficheiro de dados | 
| dataSegment1.diskReadCount | Object | Número de leituras no ficheiro de dados | 
| dataSegment1.diskWriteCount | Object | Número de escritas no ficheiro de dados | 
| indexSegment.diskReadBytes | Number | Número de bytes lidos no ficheiro de índice | 
| indexSegment.diskWriteBytes | Number | Número de bytes escritos no ficheiro de índice | 
| indexSegment.diskReadCount | Number | Número de leituras no ficheiro índice | 
| indexSegment.diskWriteCount | Number | Número de escritas no ficheiro de índice | 
Recolhidos aquando do encerramento da base de dados e do envio da recolha de dados
| Dados | Tipo | Notas | 
|---|---|---|
| webserverHits | Number | Número de acessos ao servidor Web durante a recolha de dados | 
| restHits | Number | Número de acessos ao servidor REST durante a recolha de dados | 
| webserverBytesIn | Number | Bytes recebidos pelo servidor Web durante a recolha de dados | 
| webserverBytesOut | Number | Bytes enviados pelo servidor Web durante a recolha de dados | 
Recolhido sempre que PHP execute é chamado
| Dados | Tipo | Notas | 
|---|---|---|
| phpCall | Number | Número de chamadas para PHP execute | 
| externalPHP | Parâmetros | True se o cliente efetuar uma chamada para PHP execute e utilizar a sua própria versão de php | 
Recolhido na ligação do cliente
| Dados | Tipo | Notas | 
|---|---|---|
| maximum4DClientConnections | Number | Número máximo de ligações 4D Client ao servidor | 
| connectionSystems | Collection | SO do cliente sem o número de compilação (entre parêntesis) e número de clientes que o utilizam | 
Onde é armazenado e enviado?
Os dados coletados são escritos em um arquivo de texto (formato JSON) por banco de dados quando 4D Servidor abandona. O ficheiro é armazenado dentro da pasta 4D ativa, ou seja:
- no Windows: 
Utilizadores\[userName]\AppData\Roaming\4D Server - em macOS: 
/Users/[userName]/Library/ApplicationSupport/4D Server 
Uma vez por semana, o ficheiro é automaticamente enviado através da rede para 4D. O arquivo é então apagado da pasta 4D activa.

Se o arquivo não pôde ser enviado por algum motivo, é, no entanto, apagado e não é exibida nenhuma mensagem de erro no lado do Servidor 4D.
O ficheiro é enviado para o seguinte endereço de servidor: https://dcollector.4d.com (ip: 195.68.52.83).
Desativar a coleção de dados em aplicações cliente/servidor geradas
Pode desactivar a recolha automática de dados em aplicações construídas cliente/servidor.
Para desativar a coleção, passar o valor False para a chave ServerDataCollection no arquivo buildApp.4DSettings, utilizado para construir a aplicação cliente/servidor.