/** * @param $size * @param $concurrencyLevel * @param $verbose */ function multi($size, $concurrencyLevel, $verbose) { // if ($concurrencyLevel > 250) { // $concurrencyLevel = 250; // echo 'Rate limit to 250' . PHP_EOL; // } echo 'size = ' . $size . ', concurrency level = ' . $concurrencyLevel . PHP_EOL; $tasks = urlProvider($size); $multiHandle = curl_multi_init(); // init the curl Multi $concurrentRequests = []; // create an array for the individual curl handles for ($i = 0; $i < $concurrencyLevel; $i++) { $url = nextTask($tasks); if ($url === null) { break; } echo '.'; $request = newRequest($url); curl_multi_add_handle($multiHandle, $request); $concurrentRequests[$url] = $request; } $retry = 0; $fail = 0; $success = 0; $running = null; $noMoreTasks = false; $retryQueue = []; do { while (($ret = curl_multi_exec($multiHandle, $running)) === CURLM_CALL_MULTI_PERFORM) { } if ($ret !== CURLM_OK) { break; } // a request was just completed -- find out which one while ($done = curl_multi_info_read($multiHandle)) { // on complete event $doneHandle = $done['handle']; $info = curl_getinfo($doneHandle); $doneUrl = $info['url']; unset($concurrentRequests[$doneUrl]); // on complete successfully if ($info['http_code'] === 200) { $success++; $output = curl_multi_getcontent($done['handle']); assert(is_string($output)); if ($verbose) { echo 'response len = ' . strlen($output) . PHP_EOL; } if ($noMoreTasks || ($url = nextTask($tasks)) === null) { $noMoreTasks = true; continue; } echo '.'; // start a new request (it's important to do this before removing the old one) refillQueue($multiHandle, $concurrentRequests, $url); $running++; // remove the curl handle that just completed curl_multi_remove_handle($multiHandle, $doneHandle); // echo "done url: " . $doneUrl . PHP_EOL; // echo 'add new request: ' . $url . PHP_EOL; // print_r($concurrentRequests); } else { // on complete failed if (!array_key_exists($doneUrl, $retryQueue)) { $retryQueue[$doneUrl] = 0; echo 'error[' . curl_errno($doneHandle) . '] on ' . $doneUrl . ' => ' . curl_error($doneHandle) . PHP_EOL; } $retryQueue[$doneUrl]++; if ($retryQueue[$doneUrl] < 3) { refillQueue($multiHandle, $concurrentRequests, $doneUrl); $running++; $retry++; curl_multi_remove_handle($multiHandle, $doneHandle); usleep(100000); } else { $fail++; } } } } while ($running); curl_multi_close($multiHandle); echo PHP_EOL . "success: {$success}, retry: {$retry}, fail: {$fail}" . PHP_EOL; }
echo "<p>testing NewFamilyProfile, expect an array of users to be emailed<p>"; NewFamilyProfile(345); echo "<p>testing Confirm<p>"; Confirm(7, '3/3', '3/4', 2, 2); echo "<p>Testing RequestAccept<p>"; RequestAccept(7, '3/2', '3/3', 2, 2); echo "<p>Testing RequesDeny<p>"; RequestDeny(7, '3/2', '3/3', 2, 2); echo "testing FamilyModConfirm<p>"; FamilyModConfirm(7, 2, 2); echo "<p>Testing FamilyModAccept<p>"; FamilyModAccept(7, 2, 2); echo "<p>testing FamilyModDeny<p>"; FamilyModDeny(7, 2, 2); echo "<p>Testing newRequest<p>"; newRequest(123, '3/1', '3/2', '3/3'); echo "<p>Testing NewReservationMod<p>"; newReservationMod(1234, '3/1', 2); echo "<p>Testing NewCancel<p>"; newCancel(1321321321, '3/1', 2); echo "<p>Testing newFamilyMod</br>"; newFamilyMod(1321321321, '3/1', 2); echo "<p>testing family confirm<p>"; FamilyConfirm(2, '3/1', '3/2', 'nsdjasdjad'); //Testing Mail to STjohns Email echo "<p> Testing ST johns Email</br>"; $to = '*****@*****.**'; //valid destination email address $subject = 'testing php mail function windows'; $message = 'This is a test email, I am testing the php mail function'; $mailed = mail($to, $subject, $message);