PHPackages                             asiby/chronos - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. asiby/chronos

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

asiby/chronos
=============

A PHP library to start a timer you can use to track how long an operation takes.

1.0.1(6y ago)25.6k↓50%MITPHP

Since Apr 5Pushed 4y ago1 watchersCompare

[ Source](https://github.com/asiby/chronos)[ Packagist](https://packagist.org/packages/asiby/chronos)[ RSS](/packages/asiby-chronos/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

Chronos
=======

[](#chronos)

A PHP library to start timers for tracking the execution time of some operations in an application.

Introduction
------------

[](#introduction)

This library was inspired by the Google Chrome DevTools feature that let's you use `console.time()`, `console.timeLog()`, and `console.timeEnd()` to respectively create a timer, log the timer's value, and destroy the timer while printing out the final timer's value.

This is a PHP equivalent of that feature and it offers the following benefits:

- Dead easy to use
- Has no dependencies
- Extremely passive ... it will not throw any error if you don't use it properly.

Installation
------------

[](#installation)

```
composer require asiby/chronos
```

Importing the library
---------------------

[](#importing-the-library)

Use the following statement at the top of any code where you intend to use `Chronos`.

```
use ASiby\Chronos;
```

API Documentation
-----------------

[](#api-documentation)

Note that for the sake of simplicity, `Chronos` provides static methods only.

Each timer has to have a unique identifier (the label) that will be used when generating the output for that timer.

### Creating a timer

[](#creating-a-timer)

```
Chronos::time([$label = 'default'], [$verbose = false]);

```

#### Parameters:

[](#parameters)

- `$label`: Optional String (default: 'default'). This is the unique identifier for the timer being created.
- `$verbose`: Optional String (default: false). This parameter will make the timer generate some extra information.

#### Output:

[](#output)

```
Started a new timer with the label 'default'

```

This function will only generate an output if the verbose mode is enabled. The name of the label will be included in the generated output.

The `time()` function can be called as many time as needed with different labels. Nothing will happen if you try to create a timer that already exists.

#### Examples:

[](#examples)

Creating a default timer.

```
use ASiby\Chronos;
// ...

Chronos::time();
```

Creating a timer called `Time taken by the database call`.

```
use ASiby\Chronos;
// ...

Chronos::time("Time taken by the database call");
```

Creating a timer called `API Request Time` with the verbose mode enabled.

```
use ASiby\Chronos;
// ...

Chronos::time("API Request Time", true);
```

Creating a timer with the default label but with the verbose mode enabled.

```
use ASiby\Chronos;
// ...

Chronos::time(null, true);
```

### Printing a timing log

[](#printing-a-timing-log)

```
Chronos::logTime([$label = 'default'], [$description = null], [$showDelta = true]);

```

#### Parameters:

[](#parameters-1)

- `$label`: Optional String (default: 'default'). This is the unique identifier for the timer being created.
- `$description`: Optional String (default: null). Extra text that allows identifying the context related to a particular time log.
- `$showDelta`: Optional String (default: true). Include the relative time since the last time `logTime()` was called. The first call to `logTime()` will no show a delta.

You can't call `logTime()` before calling `time()` for a given timer.

#### Alias

[](#alias)

```
Chronos::timeLog([$label = 'default'], [$description = null], [$showDelta = true]);

```

#### Output:

[](#output-1)

First call ...

```
default: 1.5044138432s

```

Subsequent calls ... Note that the delta is option and is controlled by the `showDelta` flag.

```
default: 3.0088098049s - Time log delta: 1.5043959618s

```

Time log that has a description attached

```
default: 3.0088098049s - Time log delta: 1.5043959618s - This is the second time log

```

Using friendly label.

```
The execution time is: 3.0088098049s - Time log delta: 1.5043959618s - This is the second time log

```

#### Examples:

[](#examples-1)

Printing the time log for the default timer.

```
use ASiby\Chronos;

Chronos::time(null, true);
usleep(1500000);
Chronos::logTime(null, "First logTime()");
usleep(1500000);
Chronos::logTime(null, "Second logTime()", false);
usleep(500000);
Chronos::logTime(null, "Third logTime()");
usleep(1500000);
Chronos::logTime();
usleep(1500000);
Chronos::logTime();
usleep(500000);
Chronos::logTime();
```

```
Chronos::time(null, true);
usleep(1500000);
Chronos::logTime(null, "First logTime()");
usleep(1500000);
Chronos::logTime(null, "Second logTime()");
usleep(500000);
Chronos::logTime(null, "Third logTime()");
usleep(1500000);
Chronos::logTime();
usleep(1500000);
Chronos::logTime();
usleep(500000);
Chronos::logTime();

```

### Destroying a timer

[](#destroying-a-timer)

```
Chronos::endTime([$label = 'default'], [$description = null]);

```

This function will destroy the timer and log its value, label and optional description provided at the time of the call.

#### Parameters:

[](#parameters-2)

- `$label`: Optional String (default: 'default'). This is the unique identifier for the timer being created.
- `$description`: Optional String (default: null). Extra text that allows identifying the context related to a particular time log.

The `endTime()` function is the last action that can be performed with a timer. Any subsequent call to `logTime()` with fail.

#### Alias

[](#alias-1)

```
Chronos::timeEnd([$label = 'default'], [$description = null], [$showDelta = true]);

```

#### Output:

[](#output-2)

The second line is logged when the verbose mode was used when creating the timer.

```
default: 10.0224950314s (final)
Terminated a new timer with the label 'default'

```

Credits
-------

[](#credits)

This implementation is inspired by a Google Chrome DevTools feature.

Contributing
------------

[](#contributing)

Improvements are welcome! Feel free to submit pull requests.

Licence
-------

[](#licence)

MIT

Copyright © 2020 - [Abdoulaye Siby](https://abdoulaye.com)

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

2

Last Release

2228d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/df7c24b116c8d7b3f8959a5ba18a4dd0ae6bad1d73d4449c39d1da3ec7cce0e4?d=identicon)[asiby](/maintainers/asiby)

---

Top Contributors

[![asiby](https://avatars.githubusercontent.com/u/455674?v=4)](https://github.com/asiby "asiby (22 commits)")

### Embed Badge

![Health badge](/badges/asiby-chronos/health.svg)

```
[![Health](https://phpackages.com/badges/asiby-chronos/health.svg)](https://phpackages.com/packages/asiby-chronos)
```

###  Alternatives

[ecotone/ecotone

Supporting you in building DDD, CQRS, Event Sourcing applications with ease.

558549.8k17](/packages/ecotone-ecotone)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k20](/packages/civicrm-civicrm-core)[j0k3r/php-readability

Automatic article extraction from HTML

186808.8k6](/packages/j0k3r-php-readability)[symfony/ai-platform

PHP library for interacting with AI platform provider.

51927.7k136](/packages/symfony-ai-platform)[symfony/ai-agent

PHP library for building agentic applications.

30536.7k44](/packages/symfony-ai-agent)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
