Subversion Repositories php_utils

Rev

Rev 28 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. /*
  4.  * fixed_length_microtime() for PHP
  5.  * Copyright 2022 Daniel Marschall, ViaThinkSoft
  6.  * Version 2022-03-08
  7.  *
  8.  * Licensed under the Apache License, Version 2.0 (the "License");
  9.  * you may not use this file except in compliance with the License.
  10.  * You may obtain a copy of the License at
  11.  *
  12.  *     http://www.apache.org/licenses/LICENSE-2.0
  13.  *
  14.  * Unless required by applicable law or agreed to in writing, software
  15.  * distributed under the License is distributed on an "AS IS" BASIS,
  16.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17.  * See the License for the specific language governing permissions and
  18.  * limitations under the License.
  19.  */
  20.  
  21. function fixed_length_microtime($unique=true) {
  22.         // This function outputs a fixed-length microtime (can be used for sorting)
  23.         // Optionally, it ensures that the output is always different by waiting 1 microsecond
  24.  
  25.         $ary = explode('.', (string)microtime(true));
  26.         if (!isset($ary[1])) $ary[1] = 0;
  27.         $ret = $ary[0].'_'.str_pad($ary[1], 4, '0', STR_PAD_RIGHT);
  28.  
  29.         if ($unique) {
  30.                 // Make sure value changes by waiting 1 microsecond.
  31.                 usleep(1);
  32.         }
  33.  
  34.         return $ret;
  35. }
  36.