3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php /* A tasks job is to count from 0 to $limit */ class Task { public function __construct($limit) { $this->limit = ($limit + 1) * 100; } public function doWork($async) { if ($async) { /* do a little work and allow another task to continue */ $this->position++; } else { /* do all the work */ for (; $this->position < $this->limit; $this->position++); } } public function hasWork() { return $this->position <= $this->limit; } public function getPosition() { return $this->position; } private $position = 0; private $limit = 0; } /* helper for detecting completion */ function finished($tasks) { foreach ($tasks as $task) { if ($task->hasWork()) return false; } return true; } /* helper for printing positions */ function positions($tasks, $numeric = false) { $positions = array(); foreach ($tasks as $task) { $positions[] = $numeric || $task->hasWork() ? $task->getPosition() : "-"; } return $positions; } /* create three tasks */ $tasks = array( new Task(0), new Task(1), new Task(2) ); /* execute tasks asynchronously */ while (!finished($tasks)) { foreach ($tasks as $task) { if ($task->hasWork()) { $task->doWork(true); } vprintf( "% 4s % 4s % 4s\n", positions($tasks)); } } printf("------------------\n"); $tasks = array( new Task(0), new Task(1), new Task(2) ); /* execute tasks synchronously */ foreach ($tasks as $task) { if ($task->hasWork()) { $task->doWork(false); } vprintf( "% 4s % 4s % 4s\n", positions($tasks)); } ?>
based on ucoJ8
Output for 5.0.0 - 5.6.28, hhvm-3.10.0 - 3.12.0, 7.0.0 - 7.1.0
1 0 0 1 1 0 1 1 1 2 1 1 2 2 1 2 2 2 3 2 2 3 3 2 3 3 3 4 3 3 4 4 3 4 4 4 5 4 4 5 5 4 5 5 5 6 5 5 6 6 5 6 6 6 7 6 6 7 7 6 7 7 7 8 7 7 8 8 7 8 8 8 9 8 8 9 9 8 9 9 9 10 9 9 10 10 9 10 10 10 11 10 10 11 11 10 11 11 11 12 11 11 12 12 11 12 12 12 13 12 12 13 13 12 13 13 13 14 13 13 14 14 13 14 14 14 15 14 14 15 15 14 15 15 15 16 15 15 16 16 15 16 16 16 17 16 16 17 17 16 17 17 17 18 17 17 18 18 17 18 18 18 19 18 18 19 19 18 19 19 19 20 19 19 20 20 19 20 20 20 21 20 20 21 21 20 21 21 21 22 21 21 22 22 21 22 22 22 23 22 22 23 23 22 23 23 23 24 23 23 24 24 23 24 24 24 25 24 24 25 25 24 25 25 25 26 25 25 26 26 25 26 26 26 27 26 26 27 27 26 27 27 27 28 27 27 28 28 27 28 28 28 29 28 28 29 29 28 29 29 29 30 29 29 30 30 29 30 30 30 31 30 30 31 31 30 31 31 31 32 31 31 32 32 31 32 32 32 33 32 32 33 33 32 33 33 33 34 33 33 34 34 33 34 34 34 35 34 34 35 35 34 35 35 35 36 35 35 36 36 35 36 36 36 37 36 36 37 37 36 37 37 37 38 37 37 38 38 37 38 38 38 39 38 38 39 39 38 39 39 39 40 39 39 40 40 39 40 40 40 41 40 40 41 41 40 41 41 41 42 41 41 42 42 41 42 42 42 43 42 42 43 43 42 43 43 43 44 43 43 44 44 43 44 44 44 45 44 44 45 45 44 45 45 45 46 45 45 46 46 45 46 46 46 47 46 46 47 47 46 47 47 47 48 47 47 48 48 47 48 48 48 49 48 48 49 49 48 49 49 49 50 49 49 50 50 49 50 50 50 51 50 50 51 51 50 51 51 51 52 51 51 52 52 51 52 52 52 53 52 52 53 53 52 53 53 53 54 53 53 54 54 53 54 54 54 55 54 54 55 55 54 55 55 55 56 55 55 56 56 55 56 56 56 57 56 56 57 57 56 57 57 57 58 57 57 58 58 57 58 58 58 59 58 58 59 59 58 59 59 59 60 59 59 60 60 59 60 60 60 61 60 60 61 61 60 61 61 61 62 61 61 62 62 61 62 62 62 63 62 62 63 63 62 63 63 63 64 63 63 64 64 63 64 64 64 65 64 64 65 65 64 65 65 65 66 65 65 66 66 65 66 66 66 67 66 66 67 67 66 67 67 67 68 67 67 68 68 67 68 68 68 69 68 68 69 69 68 69 69 69 70 69 69 70 70 69 70 70 70 71 70 70 71 71 70 71 71 71 72 71 71 72 72 71 72 72 72 73 72 72 73 73 72 73 73 73 74 73 73 74 74 73 74 74 74 75 74 74 75 75 74 75 75 75 76 75 75 76 76 75 76 76 76 77 76 76 77 77 76 77 77 77 78 77 77 78 78 77 78 78 78 79 78 78 79 79 78 79 79 79 80 79 79 80 80 79 80 80 80 81 80 80 81 81 80 81 81 81 82 81 81 82 82 81 82 82 82 83 82 82 83 83 82 83 83 83 84 83 83 84 84 83 84 84 84 85 84 84 85 85 84 85 85 85 86 85 85 86 86 85 86 86 86 87 86 86 87 87 86 87 87 87 88 87 87 88 88 87 88 88 88 89 88 88 89 89 88 89 89 89 90 89 89 90 90 89 90 90 90 91 90 90 91 91 90 91 91 91 92 91 91 92 92 91 92 92 92 93 92 92 93 93 92 93 93 93 94 93 93 94 94 93 94 94 94 95 94 94 95 95 94 95 95 95 96 95 95 96 96 95 96 96 96 97 96 96 97 97 96 97 97 97 98 97 97 98 98 97 98 98 98 99 98 98 99 99 98 99 99 99 100 99 99 100 100 99 100 100 100 - 100 100 - 101 100 - 101 101 - 101 101 - 102 101 - 102 102 - 102 102 - 103 102 - 103 103 - 103 103 - 104 103 - 104 104 - 104 104 - 105 104 - 105 105 - 105 105 - 106 105 - 106 106 - 106 106 - 107 106 - 107 107 - 107 107 - 108 107 - 108 108 - 108 108 - 109 108 - 109 109 - 109 109 - 110 109 - 110 110 - 110 110 - 111 110 - 111 111 - 111 111 - 112 111 - 112 112 - 112 112 - 113 112 - 113 113 - 113 113 - 114 113 - 114 114 - 114 114 - 115 114 - 115 115 - 115 115 - 116 115 - 116 116 - 116 116 - 117 116 - 117 117 - 117 117 - 118 117 - 118 118 - 118 118 - 119 118 - 119 119 - 119 119 - 120 119 - 120 120 - 120 120 - 121 120 - 121 121 - 121 121 - 122 121 - 122 122 - 122 122 - 123 122 - 123 123 - 123 123 - 124 123 - 124 124 - 124 124 - 125 124 - 125 125 - 125 125 - 126 125 - 126 126 - 126 126 - 127 126 - 127 127 - 127 127 - 128 127 - 128 128 - 128 128 - 129 128 - 129 129 - 129 129 - 130 129 - 130 130 - 130 130 - 131 130 - 131 131 - 131 131 - 132 131 - 132 132 - 132 132 - 133 132 - 133 133 - 133 133 - 134 133 - 134 134 - 134 134 - 135 134 - 135 135 - 135 135 - 136 135 - 136 136 - 136 136 - 137 136 - 137 137 - 137 137 - 138 137 - 138 138 - 138 138 - 139 138 - 139 139 - 139 139 - 140 139 - 140 140 - 140 140 - 141 140 - 141 141 - 141 141 - 142 141 - 142 142 - 142 142 - 143 142 - 143 143 - 143 143 - 144 143 - 144 144 - 144 144 - 145 144 - 145 145 - 145 145 - 146 145 - 146 146 - 146 146 - 147 146 - 147 147 - 147 147 - 148 147 - 148 148 - 148 148 - 149 148 - 149 149 - 149 149 - 150 149 - 150 150 - 150 150 - 151 150 - 151 151 - 151 151 - 152 151 - 152 152 - 152 152 - 153 152 - 153 153 - 153 153 - 154 153 - 154 154 - 154 154 - 155 154 - 155 155 - 155 155 - 156 155 - 156 156 - 156 156 - 157 156 - 157 157 - 157 157 - 158 157 - 158 158 - 158 158 - 159 158 - 159 159 - 159 159 - 160 159 - 160 160 - 160 160 - 161 160 - 161 161 - 161 161 - 162 161 - 162 162 - 162 162 - 163 162 - 163 163 - 163 163 - 164 163 - 164 164 - 164 164 - 165 164 - 165 165 - 165 165 - 166 165 - 166 166 - 166 166 - 167 166 - 167 167 - 167 167 - 168 167 - 168 168 - 168 168 - 169 168 - 169 169 - 169 169 - 170 169 - 170 170 - 170 170 - 171 170 - 171 171 - 171 171 - 172 171 - 172 172 - 172 172 - 173 172 - 173 173 - 173 173 - 174 173 - 174 174 - 174 174 - 175 174 - 175 175 - 175 175 - 176 175 - 176 176 - 176 176 - 177 176 - 177 177 - 177 177 - 178 177 - 178 178 - 178 178 - 179 178 - 179 179 - 179 179 - 180 179 - 180 180 - 180 180 - 181 180 - 181 181 - 181 181 - 182 181 - 182 182 - 182 182 - 183 182 - 183 183 - 183 183 - 184 183 - 184 184 - 184 184 - 185 184 - 185 185 - 185 185 - 186 185 - 186 186 - 186 186 - 187 186 - 187 187 - 187 187 - 188 187 - 188 188 - 188 188 - 189 188 - 189 189 - 189 189 - 190 189 - 190 190 - 190 190 - 191 190 - 191 191 - 191 191 - 192 191 - 192 192 - 192 192 - 193 192 - 193 193 - 193 193 - 194 193 - 194 194 - 194 194 - 195 194 - 195 195 - 195 195 - 196 195 - 196 196 - 196 196 - 197 196 - 197 197 - 197 197 - 198 197 - 198 198 - 198 198 - 199 198 - 199 199 - 199 199 - 200 199 - 200 200 - 200 200 - - 200 - - 201 - - 201 - - 201 - - 202 - - 202 - - 202 - - 203 - - 203 - - 203 - - 204 - - 204 - - 204 - - 205 - - 205 - - 205 - - 206 - - 206 - - 206 - - 207 - - 207 - - 207 - - 208 - - 208 - - 208 - - 209 - - 209 - - 209 - - 210 - - 210 - - 210 - - 211 - - 211 - - 211 - - 212 - - 212 - - 212 - - 213 - - 213 - - 213 - - 214 - - 214 - - 214 - - 215 - - 215 - - 215 - - 216 - - 216 - - 216 - - 217 - - 217 - - 217 - - 218 - - 218 - - 218 - - 219 - - 219 - - 219 - - 220 - - 220 - - 220 - - 221 - - 221 - - 221 - - 222 - - 222 - - 222 - - 223 - - 223 - - 223 - - 224 - - 224 - - 224 - - 225 - - 225 - - 225 - - 226 - - 226 - - 226 - - 227 - - 227 - - 227 - - 228 - - 228 - - 228 - - 229 - - 229 - - 229 - - 230 - - 230 - - 230 - - 231 - - 231 - - 231 - - 232 - - 232 - - 232 - - 233 - - 233 - - 233 - - 234 - - 234 - - 234 - - 235 - - 235 - - 235 - - 236 - - 236 - - 236 - - 237 - - 237 - - 237 - - 238 - - 238 - - 238 - - 239 - - 239 - - 239 - - 240 - - 240 - - 240 - - 241 - - 241 - - 241 - - 242 - - 242 - - 242 - - 243 - - 243 - - 243 - - 244 - - 244 - - 244 - - 245 - - 245 - - 245 - - 246 - - 246 - - 246 - - 247 - - 247 - - 247 - - 248 - - 248 - - 248 - - 249 - - 249 - - 249 - - 250 - - 250 - - 250 - - 251 - - 251 - - 251 - - 252 - - 252 - - 252 - - 253 - - 253 - - 253 - - 254 - - 254 - - 254 - - 255 - - 255 - - 255 - - 256 - - 256 - - 256 - - 257 - - 257 - - 257 - - 258 - - 258 - - 258 - - 259 - - 259 - - 259 - - 260 - - 260 - - 260 - - 261 - - 261 - - 261 - - 262 - - 262 - - 262 - - 263 - - 263 - - 263 - - 264 - - 264 - - 264 - - 265 - - 265 - - 265 - - 266 - - 266 - - 266 - - 267 - - 267 - - 267 - - 268 - - 268 - - 268 - - 269 - - 269 - - 269 - - 270 - - 270 - - 270 - - 271 - - 271 - - 271 - - 272 - - 272 - - 272 - - 273 - - 273 - - 273 - - 274 - - 274 - - 274 - - 275 - - 275 - - 275 - - 276 - - 276 - - 276 - - 277 - - 277 - - 277 - - 278 - - 278 - - 278 - - 279 - - 279 - - 279 - - 280 - - 280 - - 280 - - 281 - - 281 - - 281 - - 282 - - 282 - - 282 - - 283 - - 283 - - 283 - - 284 - - 284 - - 284 - - 285 - - 285 - - 285 - - 286 - - 286 - - 286 - - 287 - - 287 - - 287 - - 288 - - 288 - - 288 - - 289 - - 289 - - 289 - - 290 - - 290 - - 290 - - 291 - - 291 - - 291 - - 292 - - 292 - - 292 - - 293 - - 293 - - 293 - - 294 - - 294 - - 294 - - 295 - - 295 - - 295 - - 296 - - 296 - - 296 - - 297 - - 297 - - 297 - - 298 - - 298 - - 298 - - 299 - - 299 - - 299 - - 300 - - 300 - - 300 - - - ------------------ 100 0 0 100 200 0 100 200 300
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/FpNRu on line 5
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/FpNRu on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/FpNRu on line 5
Process exited with code 255.