temporal 官网示例
python:
@workflow.defn
class SleepForDaysWorkflow:
# Send an email every 30 days, for the year
@workflow.run
async def run(self) -> None:
for i in range(12):
# Activities have built-in support for timeouts and retries!
await workflow.execute_activity(
send_email,
start_to_close_timeout=timedelta(seconds=10),
)
# Sleep for 30 days (yes, really)!
await workflow.sleep(timedelta(days=30))
ruby:
# Send an email every 30 days, for the year
class SleepForDaysWorkflow < Temporalio::Workflow::Definition
def execute
12.times do
# Activities have built-in support for timeouts and retries!
Temporalio::Workflow.execute_activity(
SendEmailActivity,
start_to_close_timeout: 10
)
# Sleep for 30 days (yes, really)!
Temporalio::Workflow.sleep(30 * 24 * 60 * 60)
end
end
end
C#:
[Workflow]
public class SleepForDaysWorkflow
{
// Send an email every 30 days, for the year
[WorkflowRun]
public async Task RunAsync()
{
for (int i = 0; i < 12; i++)
{
// Activities have built-in support for timeouts and retries!
await Workflow.ExecuteActivityAsync(
(Activities act) => act.SendEmail(),
new() { StartToCloseTimeout = TimeSpan.FromSeconds(10) });
// Sleep for 30 days (yes, really)!
await Workflow.DelayAsync(TimeSpan.FromDays(30));
}
}
}
PHP:
class SleepForDaysWorkflow implements SleepForDaysWorkflowInterface
{
// Send an email every 30 days.
public function sleepForDays(): void
{
for ($i = 0; $i < 12; $i++) {
// Activities have timeouts, and will be retried by default!
$this->sendEmailActivity->sendEmail();
// Sleep for 30 days (yes, really)!
Workflow::sleep(30 * 24 * 60 * 60)
}
}
}
感觉对于 java 程序员 php 的心智负担好小啊
1
xtreme1 23 小时 24 分钟前
这几段代码首先语义上就不等价啊. php 的 async call 是配在框架里面了.
|
2
jybox 23 小时 13 分钟前
@xtreme1 是等价的,几种语言都是做到框架里的(不可能真的 sleep 30 天)
但我没看出来 PHP 优雅在哪里,感觉都差不多,PHP 稍微短一点是因为没写 timeout 而且省略了 sendEmailActivity 这个对象(显然这不是框架内置的)。 |
3
florentino OP @xtreme1 所以我说感觉嘛,我一眼看过去就知道是啥意思, 不像其他语言我还得去扒拉特殊语
法 |
4
ragnaroks 23 小时 4 分钟前
csharp 部分,ExecuteActivityAsync 这个方法的签名设计确实不行,不过很多涉及到时间段的部分总是 TimeSpan 确实也绷不住
|
5
XIVN1987 22 小时 7 分钟前
上面三个示例都有指定 10s timeout ,,PHP 的版本没指定啊,,这功能不完全一样吧
|
6
XIVN1987 22 小时 6 分钟前
python 的实现为啥不用继承,,而是使用装饰器??
|
7
florentino OP @XIVN1987 #6 不知道啊 官网的写法
![]() |
8
ccc008 21 小时 59 分钟前 php 最不爽的就是$符
|
11
Smileh 21 小时 46 分钟前
😏
|
12
cj323 21 小时 44 分钟前 via Android
只写过 py 和 c#。纯美感上我认同这几个示例里 PHP 看着更舒服点。其他几个除 ruby 外显得有点繁杂。
|
14
maigebaoer 21 小时 30 分钟前 via Android
Java 程序员可以无缝切到 PHP
|
15
chendy 21 小时 25 分钟前 我也不知道咋回事
看到 PHP 仨字,右手小指就放在了 shift 上,食指放在了 4 上 |
16
lscho 21 小时 21 分钟前
说实话,php 除了$符号,其他的语法真的足够简洁优雅
|
17
urlk 21 小时 21 分钟前
没事, java 也支持 $ 做变量开头
|
18
est 21 小时 20 分钟前
|
19
CodeCodeStudy 21 小时 19 分钟前
ruby 一大堆的 end
|
20
passive 21 小时 17 分钟前 via Android
要不是因为 cpan ,早就想从 Perl 转到 PHP 。当然,现在只剩 Python 了🐶
|
22
lvsp95 21 小时 4 分钟前
@maigebaoer #12 从 PHP 切到 Java 也很简单
|
24
liKeYunKeji 20 小时 37 分钟前
php\javascript\java 都很相似。
|
25
jimmzhou 20 小时 30 分钟前
好多年没写 php 了 看到 php 的代码 感觉好亲切
|
26
wogogoing PRO op 怎么没把 Go 的贴出来呀。哈哈哈。
|
27
florentino OP @wogogoing 因为 go 我也能看懂
![]() |
28
florentino OP @ccc008 $符号我一看就知道是变量,跟 shell 一样
|
29
wogogoing PRO @florentino 哈哈哈哈 不错不错
|
30
mx1700 2 小时 27 分钟前
看到 PHP 就感觉到左手小拇指有点抽筋
|
31
NewYear 1 小时 28 分钟前
PHP 最大的问题不是$,而是设计一塌糊涂,例如我要处理一个字符串,我要把这个字符串放在第几个参数?每个处理函数还不一样。
这导致要单独记忆,很多人都是懂多种语言,没谁想单独为某个语言记一些垃圾玩意。 另外就是 JS 这种可以链式调用,自动补全啥的都很优秀,php 这种……语法也不优美,函数套函数,函数套函数,眼睛都看不清楚引号和括号是哪个函数的(当年我写 vb 也有这个问题,烦) 这也是为什么很多人说别学 C#,学了之后学不会其他语言了,因为设计是真的好,由奢入俭难。 |