3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * @throws \Paycom_Dbal_Exception * @throws \Exception */ private function fetchCertApprovedAndAwaitingVerificationByEeCode( string $clientCode, array $eeCodes = array(), bool $showArchivedEeCert = false ) : array { $qb = $this->connection->createQueryBuilder(); $qb->select([ 'eeCert.eecode AS eeCode', 'eeCert.verification_status AS verificationStatus', 'approvers.approver_type AS approverType', 'approvers.approver AS approverUserName', 'user.userstatus AS approverStatus', 'emp.supervsr1 AS supervisorEeCode', 'sup_user.username AS supervisorUsername', 'sup_user.userstatus AS supervisorStatus' ]) ->from('lms_cm_ee_cert_master', 'master') ->innerJoin( 'master', 'lms_cm_certification', 'cert', $qb->expr()->andX( $qb->expr()->eq('master.clientcode', 'cert.clientcode'), $qb->expr()->eq('master.cert_id', 'cert.id') ) ) ->innerJoin( 'master', 'lms_cm_ee_certification', 'eeCert', $qb->expr()->andX( $qb->expr()->eq('master.clientcode', 'eeCert.clientcode'), $qb->expr()->eq('master.eecode', 'eeCert.eecode'), $qb->expr()->eq('master.id', 'eeCert.ee_cert_master_id') ) ) ->leftJoin( 'eeCert', 'lms_cm_ee_certification', 'eeCert2', $qb->expr()->andX( $qb->expr()->eq('eeCert2.clientcode', 'eeCert.clientcode'), $qb->expr()->eq('eeCert2.eecode', 'eeCert.eecode'), $qb->expr()->eq('eeCert2.ee_cert_master_id', 'eeCert.ee_cert_master_id'), $qb->expr()->gt('eeCert2.added_on', 'eeCert.added_on') ) ) ->leftJoin( 'master', 'lms_cm_approvers', 'approvers', $qb->expr()->andX( $qb->expr()->eq('master.clientcode', 'approvers.clientcode'), $qb->expr()->eq('master.cert_id', 'approvers.cert_id'), $qb->expr()->eq('master.approver_master_id', 'approvers.approver_master_id'), $qb->expr()->eq('master.sequence', 'approvers.sequence') ) ) ->leftJoin( 'approvers', 'on_clusers', 'user', $qb->expr()->andX( $qb->expr()->eq('user.clientcode', 'approvers.clientcode'), $qb->expr()->eq('user.username', 'approvers.approver') ) ) ->leftJoin( 'master', 'empchild', 'emp', $qb->expr()->andX( $qb->expr()->eq('emp.clientcode', 'master.clientcode'), $qb->expr()->eq('emp.eecode', 'master.eecode') ) ) ->leftJoin( 'emp', 'on_clusers', 'sup_user', $qb->expr()->andX( $qb->expr()->eq('sup_user.clientcode', 'emp.clientcode'), $qb->expr()->eq('sup_user.eecode', 'emp.supervsr1') ) ) ->where($qb->expr()->eq('master.clientcode', $qb->createPositionalParameter($clientCode))) ->andWhere($qb->expr()->isNull('eeCert2.id')) ->andWhere($qb->expr()->eq('master.is_deleted', 0)); if ($this->featuresService->isEeCertArchiveRemoveEditMVPFFEnabled($clientCode)) { if(!$showArchivedEeCert) { $qb->andWhere($qb->expr()->eq('master.is_archived', 0)); $qb->andWhere($qb->expr()->eq('cert.is_archived', 0)); } } $qb->andWhere($qb->expr()->eq('eeCert.is_deleted', 0)); $qb->andWhere($qb->expr()->eq('cert.is_deleted', 0)); if (!empty($eeCodes)) { $qb->andWhere($qb->expr()->in( 'eeCert.eecode', $this->connection->batchQuote($eeCodes) )); } $rows = $qb->execute()->fetchAll(); $availableApprovers = $this->certificationApprovalWorkflowRepo->getActiveUsersWithApproveDenyPermission($clientCode); $certDataIndexedByEeCode = []; foreach ($rows as $row) { $eeCode = $row['eeCode']; if (!isset($certDataIndexedByEeCode[$eeCode])) { $certDataIndexedByEeCode[$eeCode] = [ 'eeCode' => $eeCode, 'approvedCerts' => 0, 'waitOnVerifyCerts' => 0, 'isApproverUnavailable' => false ]; } $status = (int)$row['verificationStatus']; if ($status === 1) { $certDataIndexedByEeCode[$eeCode]['approvedCerts']++; } elseif ($status === 0) { $certDataIndexedByEeCode[$eeCode]['waitOnVerifyCerts']++; $approverUsername = $row['approverType'] === CertificationSetUp::APPROVER_TYPE_PRIMARY_SUPERVISOR ? $row['supervisorUsername'] : $row['approverUserName']; $approverStatus = $row['approverType'] === CertificationSetUp::APPROVER_TYPE_PRIMARY_SUPERVISOR ? $row['supervisorStatus'] : $row['approverStatus']; if (empty($approverUsername) || $approverStatus !== 'A' || !in_array($approverUsername, $availableApprovers, true)) { $certDataIndexedByEeCode[$eeCode]['isApproverUnavailable'] = true; } } } foreach ($eeCodes as $eeCode) { if (!isset($certDataIndexedByEeCode[$eeCode])) { $certDataIndexedByEeCode[$eeCode] = [ 'approvedCerts' => 0, 'waitOnVerifyCerts' => 0, 'eeCode' => $eeCode, 'isApproverUnavailable' => false ]; } } return $certDataIndexedByEeCode; }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.60.0130.00817.82
8.4.50.0080.00317.84
8.4.40.0150.00717.79
8.4.30.0080.00217.32
8.4.20.0070.00418.01
8.4.10.0080.00317.81
8.3.200.0080.00316.86
8.3.190.0050.00616.67
8.3.180.0130.00416.23
8.3.170.0130.00416.07
8.3.160.0160.00418.42
8.3.150.0110.00615.81
8.3.140.0120.00416.53
8.3.130.0080.00716.33
8.3.120.0100.00516.44
8.3.110.0130.00216.50
8.3.100.0170.00216.46
8.3.90.0130.00516.18
8.3.80.0110.00516.32
8.3.70.0120.00516.39
8.3.60.0150.00616.14
8.3.50.0150.00515.90
8.3.40.0130.00317.34
8.3.30.0120.00817.55
8.3.20.0190.00317.43
8.3.10.0090.00517.20
8.3.00.0170.00317.48
8.2.280.0130.00616.61
8.2.270.0100.00616.25
8.2.260.0200.00716.68
8.2.250.0170.00816.61
8.2.240.0110.00816.07
8.2.230.0120.00816.18
8.2.220.0120.00916.48
8.2.210.0110.00615.88
8.2.200.0150.00316.52
8.2.190.0160.00216.12
8.2.180.0190.00516.32
8.2.170.0140.00317.28
8.2.160.0110.00617.29
8.2.150.0200.00417.19
8.2.140.0200.00717.35
8.2.130.0150.00917.27
8.2.120.0230.00717.25
8.2.110.0100.00817.51
8.2.100.0170.00217.23
8.2.90.0170.00617.45
8.2.80.0130.00516.88
8.2.70.0170.00417.40
8.2.60.0150.00216.96
8.2.50.0130.00316.96
8.2.40.0110.00517.15
8.2.30.0170.00317.03
8.2.20.0150.00616.70
8.2.10.0090.00917.18
8.2.00.0180.00316.97

preferences:
134.39 ms | 961 KiB | 7 Q