Skip to main content
Version: 20 R5

Data Collection

To help us make our products always better, we automatically collect data regarding usage statistics on running 4D Server applications. Collected data is completely anonymous and data is transferred with no impact on the user experience.

This page explains:

  • what information is collected,
  • where information is stored and when it is sent to 4D,
  • how to disable automatic data collection in client/server built applications.

Collected information

Data is collected during the following events:

  • database startup,
  • database closure,
  • web server startup,
  • php execution,
  • client connection,
  • data collection sending.

Some data is also collected at regular intervals.

Collected at database startup

DataTypeNotes
CPUTextName, type, and speed of the processor
numberOfCoresNumberTotal number of cores
memoryNumberVolume of memory storage (in bytes) available on the machine
systemTextOperating system version and build number
headlessBooleanTrue if the application is running in headless mode
versionNumberVersion number of the 4D application
buildNumberNumberBuild number of the 4D application
licenseObjectCommercial name and description of product licenses
isRosettaBooleanTrue if 4D is emulated through Rosetta on macOS, False otherwise (not emulated or on Windows).
uniqueIDTextUnique ID of the 4D Server
idText (hashed string)Unique id associated to the database (Polynomial Rolling hash of the database name)
dataFileSizeNumberData file size in bytes
indexesSizeNumberIndex size in bytes
cacheSizeNumberCache size in bytes
usingLegacyNetworkLayerBooleanTrue if legacy network layer used for the application server
usingQUICNetworkLayerBooleanTrue if the database uses the QUIC network layer
encryptedConnectionsBooleanTrue if client/server connections are encrypted
encryptedBooleanTrue if the data file is encrypted
compiledBooleanTrue if the application is compiled
isEnginedBooleanTrue if the application is merged with 4D Volume Desktop
projectModeBooleanTrue if the application is a project
mobileCollectionInformation on mobile sessions

Collected at web server startup and data collection sending

DataTypeNotes
webServerObject"started":true if the web server is starting or started

Collected at regular intervals

DataTypeNotes
maximumNumberOfWebProcessesNumberMaximum number of simultaneous web processes
maximumUsedPhysicalMemoryNumberMaximum use of physical memory
maximumUsedVirtualMemoryNumberMaximum use of virtual memory

Collected at data collection sending

DataTypeNotes
uptimeNumberTime elapsed (in seconds) since local 4D database was opened
cacheReadBytesObjectNumber of bytes read from cache
cacheMissBytesObjectNumber of bytes missed from cache
cacheReadCountObjectNumber of reads in the cache
cacheMissCountObjectNumber of reads missed in the cache
dataSegment1.diskReadBytesObjectNumber of bytes read in the data file
dataSegment1.diskWriteBytesObjectNumber of bytes written in the data file
dataSegment1.diskReadCountObjectNumber of reads in the data file
dataSegment1.diskWriteCountObjectNumber of writes in the data file
indexSegment.diskReadBytesNumberNumber of bytes read in the index file
indexSegment.diskWriteBytesNumberNumber of bytes written in the index file
indexSegment.diskReadCountNumberNumber of reads in the index file
indexSegment.diskWriteCountNumberNumber of writes in the index file

Collected at database closure and data collection sending

DataTypeNotes
webserverHitsNumberNumber of hits on the web server during the data collection
restHitsNumberNumber of hits on the REST server during the data collection
webserverBytesInNumberBytes received by the web server during the data collection
webserverBytesOutNumberBytes sent by the web server during the data collection
qodly.webformsNumberNumber of Qodly webforms

Collected every time PHP execute is called

DataTypeNotes
phpCallNumberNumber of calls to PHP execute
externalPHPBooleanTrue if the client performs a call to PHP execute and uses its own version of php

Collected at client connection

DataTypeNotes
maximum4DClientConnectionsNumberMaximum number of 4D Client connections to the server
connectionSystemsCollectionClient OS without the build number (in parenthesis) and number of clients using it

Where is it stored and sent?

Collected data is written in a text file (JSON format) per database when 4D Server quits. The file is stored inside the active 4D folder, i.e.:

  • on Windows: Users\[userName]\AppData\Roaming\4D Server
  • on macOS: /Users/[userName]/Library/ApplicationSupport/4D Server

Once a week, the file is automatically sent over the network to 4D. The file is then deleted from the active 4D folder.

If the file could not be sent for some reason, it is nevertheless deleted and no error message is displayed on the 4D Server side.

The file is sent to the following server address: https://dcollector.4d.com (ip: 195.68.52.83).

Disabling data collection in client/server built applications

You can disable the automatic data collection in client/server built applications.

To disable the collection, pass the value False to the ServerDataCollection key in the buildApp.4DSettings file, used to build the client/server application.